Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 372960 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/rwt/internal/lifecycle/PhaseListenerManager.java (-8 / +8 lines)
Lines 1-5 Link Here
1
/*******************************************************************************
1
/*******************************************************************************
2
 * Copyright (c) 2011 EclipseSource and others.
2
 * Copyright (c) 2011, 2012 EclipseSource and others.
3
 * All rights reserved. This program and the accompanying materials
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
5
 * which accompanies this distribution, and is available at
Lines 11-17 Link Here
11
package org.eclipse.rwt.internal.lifecycle;
11
package org.eclipse.rwt.internal.lifecycle;
12
12
13
import java.text.MessageFormat;
13
import java.text.MessageFormat;
14
import java.util.HashSet;
14
import java.util.LinkedHashSet;
15
import java.util.Set;
15
import java.util.Set;
16
16
17
import org.eclipse.rwt.internal.service.ServletLog;
17
import org.eclipse.rwt.internal.service.ServletLog;
Lines 24-43 Link Here
24
  private final ILifeCycle eventSource;
24
  private final ILifeCycle eventSource;
25
  private final Object lock;
25
  private final Object lock;
26
  private final Set<PhaseListener> phaseListeners;
26
  private final Set<PhaseListener> phaseListeners;
27
  
27
28
  PhaseListenerManager( ILifeCycle eventSource ) {
28
  PhaseListenerManager( ILifeCycle eventSource ) {
29
    this.eventSource = eventSource;
29
    this.eventSource = eventSource;
30
    this.lock = new Object();
30
    this.lock = new Object();
31
    this.phaseListeners = new HashSet<PhaseListener>();
31
    this.phaseListeners = new LinkedHashSet<PhaseListener>();
32
  }
32
  }
33
  
33
34
  void addPhaseListener( PhaseListener phaseListener ) {
34
  void addPhaseListener( PhaseListener phaseListener ) {
35
    ParamCheck.notNull( phaseListener, "phaseListener" );
35
    ParamCheck.notNull( phaseListener, "phaseListener" );
36
    synchronized( lock ) {
36
    synchronized( lock ) {
37
      phaseListeners.add( phaseListener );
37
      phaseListeners.add( phaseListener );
38
    }
38
    }
39
  }
39
  }
40
  
40
41
  void addPhaseListeners( PhaseListener[] phaseListeners ) {
41
  void addPhaseListeners( PhaseListener[] phaseListeners ) {
42
    ParamCheck.notNull( phaseListeners, "phaseListeners" );
42
    ParamCheck.notNull( phaseListeners, "phaseListeners" );
43
    for( int i = 0; i < phaseListeners.length; i++ ) {
43
    for( int i = 0; i < phaseListeners.length; i++ ) {
Lines 59-65 Link Here
59
      return result;
59
      return result;
60
    }
60
    }
61
  }
61
  }
62
  
62
63
  void notifyBeforePhase( PhaseId phase ) {
63
  void notifyBeforePhase( PhaseId phase ) {
64
    PhaseListener[] phaseListeners = getPhaseListeners();
64
    PhaseListener[] phaseListeners = getPhaseListeners();
65
    PhaseEvent event = new PhaseEvent( eventSource, phase );
65
    PhaseEvent event = new PhaseEvent( eventSource, phase );
Lines 89-95 Link Here
89
      }
89
      }
90
    }
90
    }
91
  }
91
  }
92
  
92
93
  private static boolean mustNotify( PhaseId phase, PhaseId listenerPhase ) {
93
  private static boolean mustNotify( PhaseId phase, PhaseId listenerPhase ) {
94
    return listenerPhase == PhaseId.ANY || listenerPhase == phase;
94
    return listenerPhase == PhaseId.ANY || listenerPhase == phase;
95
  }
95
  }
(-)src/org/eclipse/rwt/internal/lifecycle/PhaseListenerRegistry.java (-5 / +5 lines)
Lines 1-5 Link Here
1
/*******************************************************************************
1
/*******************************************************************************
2
 * Copyright (c) 2002, 2011 Innoopract Informationssysteme GmbH and others.
2
 * Copyright (c) 2002, 2012 Innoopract Informationssysteme GmbH and others.
3
 * All rights reserved. This program and the accompanying materials
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
5
 * which accompanies this distribution, and is available at
Lines 11-17 Link Here
11
 ******************************************************************************/
11
 ******************************************************************************/
12
package org.eclipse.rwt.internal.lifecycle;
12
package org.eclipse.rwt.internal.lifecycle;
13
13
14
import java.util.HashSet;
14
import java.util.LinkedHashSet;
15
import java.util.Set;
15
import java.util.Set;
16
16
17
import org.eclipse.rwt.internal.util.ParamCheck;
17
import org.eclipse.rwt.internal.util.ParamCheck;
Lines 22-35 Link Here
22
  private final Set<PhaseListener> phaseListeners;
22
  private final Set<PhaseListener> phaseListeners;
23
23
24
  public PhaseListenerRegistry() {
24
  public PhaseListenerRegistry() {
25
    phaseListeners = new HashSet<PhaseListener>();
25
    phaseListeners = new LinkedHashSet<PhaseListener>();
26
  }
26
  }
27
  
27
28
  public void add( PhaseListener listener ) {
28
  public void add( PhaseListener listener ) {
29
    ParamCheck.notNull( listener, "listener" );
29
    ParamCheck.notNull( listener, "listener" );
30
    phaseListeners.add( listener );
30
    phaseListeners.add( listener );
31
  }
31
  }
32
  
32
33
  public void remove( PhaseListener listener ) {
33
  public void remove( PhaseListener listener ) {
34
    ParamCheck.notNull( listener, "listener" );
34
    ParamCheck.notNull( listener, "listener" );
35
    phaseListeners.remove( listener );
35
    phaseListeners.remove( listener );
(-)src/org/eclipse/rwt/internal/engine/PhaseListenerRegistry_Test.java (-7 / +21 lines)
Lines 1-5 Link Here
1
/*******************************************************************************
1
/*******************************************************************************
2
 * Copyright (c) 2002, 2011 Innoopract Informationssysteme GmbH and others.
2
 * Copyright (c) 2002, 2012 Innoopract Informationssysteme GmbH and others.
3
 * All rights reserved. This program and the accompanying materials
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
5
 * which accompanies this distribution, and is available at
Lines 33-39 Link Here
33
  }
33
  }
34
34
35
  private PhaseListenerRegistry phaseListenerRegistry;
35
  private PhaseListenerRegistry phaseListenerRegistry;
36
  
36
37
  public void testAdd() {
37
  public void testAdd() {
38
    PhaseListener phaseListener = new TestPhaseListener();
38
    PhaseListener phaseListener = new TestPhaseListener();
39
    phaseListenerRegistry.add( phaseListener );
39
    phaseListenerRegistry.add( phaseListener );
Lines 46-66 Link Here
46
    } catch( NullPointerException expected ) {
46
    } catch( NullPointerException expected ) {
47
    }
47
    }
48
  }
48
  }
49
  
49
50
  public void testRemove() {
50
  public void testRemove() {
51
    PhaseListener phaseListener = new TestPhaseListener();
51
    PhaseListener phaseListener = new TestPhaseListener();
52
    phaseListenerRegistry.add( phaseListener );
52
    phaseListenerRegistry.add( phaseListener );
53
    phaseListenerRegistry.remove( phaseListener );
53
    phaseListenerRegistry.remove( phaseListener );
54
    assertEquals( 0, phaseListenerRegistry.getAll().length );
54
    assertEquals( 0, phaseListenerRegistry.getAll().length );
55
  }
55
  }
56
  
56
57
  public void testRemoveAll() {
57
  public void testRemoveAll() {
58
    PhaseListener phaseListener = new TestPhaseListener();
58
    PhaseListener phaseListener = new TestPhaseListener();
59
    phaseListenerRegistry.add( phaseListener );
59
    phaseListenerRegistry.add( phaseListener );
60
    phaseListenerRegistry.removeAll();
60
    phaseListenerRegistry.removeAll();
61
    assertEquals( 0, phaseListenerRegistry.getAll().length );
61
    assertEquals( 0, phaseListenerRegistry.getAll().length );
62
  }
62
  }
63
  
63
64
  public void testRemoveWithNullArgument() {
64
  public void testRemoveWithNullArgument() {
65
    try {
65
    try {
66
      phaseListenerRegistry.remove( null );
66
      phaseListenerRegistry.remove( null );
Lines 68-78 Link Here
68
    } catch( NullPointerException expected ) {
68
    } catch( NullPointerException expected ) {
69
    }
69
    }
70
  }
70
  }
71
  
71
72
  public void testListenersOrder() {
73
    PhaseListener phaseListener1 = new TestPhaseListener();
74
    PhaseListener phaseListener2 = new TestPhaseListener();
75
    phaseListenerRegistry.add( phaseListener1 );
76
    phaseListenerRegistry.add( phaseListener2 );
77
78
    PhaseListener[] allListeners = phaseListenerRegistry.getAll();
79
80
    assertSame( phaseListener1, allListeners[ 0 ] );
81
    assertSame( phaseListener2, allListeners[ 1 ] );
82
  }
83
84
  @Override
72
  protected void setUp() {
85
  protected void setUp() {
73
    phaseListenerRegistry = new PhaseListenerRegistry();
86
    phaseListenerRegistry = new PhaseListenerRegistry();
74
  }
87
  }
75
  
88
89
  @Override
76
  protected void tearDown()  {
90
  protected void tearDown()  {
77
    ensureServiceContextHasBeenDisposed();
91
    ensureServiceContextHasBeenDisposed();
78
  }
92
  }
(-)src/org/eclipse/rwt/internal/lifecycle/PhaseListenerManager_Test.java (-24 / +49 lines)
Lines 1-5 Link Here
1
/*******************************************************************************
1
/*******************************************************************************
2
 * Copyright (c) 2011 EclipseSource and others.
2
 * Copyright (c) 2011, 2012 EclipseSource and others.
3
 * All rights reserved. This program and the accompanying materials
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
5
 * which accompanies this distribution, and is available at
Lines 19-30 Link Here
19
import org.eclipse.rap.rwt.testfixture.*;
19
import org.eclipse.rap.rwt.testfixture.*;
20
import org.eclipse.rap.rwt.testfixture.internal.LoggingPhaseListener;
20
import org.eclipse.rap.rwt.testfixture.internal.LoggingPhaseListener;
21
import org.eclipse.rap.rwt.testfixture.internal.LoggingPhaseListener.PhaseEventInfo;
21
import org.eclipse.rap.rwt.testfixture.internal.LoggingPhaseListener.PhaseEventInfo;
22
import org.eclipse.rwt.RWT;
22
import org.eclipse.rwt.internal.service.ContextProvider;
23
import org.eclipse.rwt.internal.service.ContextProvider;
23
import org.eclipse.rwt.lifecycle.*;
24
import org.eclipse.rwt.lifecycle.*;
25
import org.eclipse.swt.widgets.Display;
24
26
25
27
26
public class PhaseListenerManager_Test extends TestCase {
28
public class PhaseListenerManager_Test extends TestCase {
27
  
29
28
  private static class TestError extends Error {
30
  private static class TestError extends Error {
29
    private static final long serialVersionUID = 1L;
31
    private static final long serialVersionUID = 1L;
30
  }
32
  }
Lines 62-76 Link Here
62
64
63
  private static class ErrorPhaseListener implements PhaseListener {
65
  private static class ErrorPhaseListener implements PhaseListener {
64
    private static final long serialVersionUID = 1L;
66
    private static final long serialVersionUID = 1L;
65
  
67
66
    public void beforePhase( PhaseEvent event ) {
68
    public void beforePhase( PhaseEvent event ) {
67
      throw new TestError();
69
      throw new TestError();
68
    }
70
    }
69
  
71
70
    public void afterPhase( PhaseEvent event ) {
72
    public void afterPhase( PhaseEvent event ) {
71
      throw new TestError();
73
      throw new TestError();
72
    }
74
    }
73
  
75
74
    public PhaseId getPhaseId() {
76
    public PhaseId getPhaseId() {
75
      return PhaseId.ANY;
77
      return PhaseId.ANY;
76
    }
78
    }
Lines 80-86 Link Here
80
  private List<Throwable> exceptionsInServletLog;
82
  private List<Throwable> exceptionsInServletLog;
81
  private PhaseListenerManager phaseListenerManager;
83
  private PhaseListenerManager phaseListenerManager;
82
  private ILifeCycle lifeCycle;
84
  private ILifeCycle lifeCycle;
83
  
85
84
  public void testAddPhaseListenerWithNullArgument() {
86
  public void testAddPhaseListenerWithNullArgument() {
85
    try {
87
    try {
86
      phaseListenerManager.addPhaseListener( null );
88
      phaseListenerManager.addPhaseListener( null );
Lines 88-94 Link Here
88
    } catch( NullPointerException expected ) {
90
    } catch( NullPointerException expected ) {
89
    }
91
    }
90
  }
92
  }
91
  
93
92
  public void testAddPhaseListener() {
94
  public void testAddPhaseListener() {
93
    LoggingPhaseListener phaseListener = new LoggingPhaseListener( null );
95
    LoggingPhaseListener phaseListener = new LoggingPhaseListener( null );
94
    phaseListenerManager.addPhaseListener( phaseListener );
96
    phaseListenerManager.addPhaseListener( phaseListener );
Lines 104-110 Link Here
104
    PhaseListener[] phaseListeners = phaseListenerManager.getPhaseListeners();
106
    PhaseListener[] phaseListeners = phaseListenerManager.getPhaseListeners();
105
    assertEquals( 1, phaseListeners.length );
107
    assertEquals( 1, phaseListeners.length );
106
  }
108
  }
107
  
109
108
  public void testAddPhaseListeners() {
110
  public void testAddPhaseListeners() {
109
    PhaseListener phaseListener1 = new EmptyPhaseListener();
111
    PhaseListener phaseListener1 = new EmptyPhaseListener();
110
    PhaseListener phaseListener2 = new EmptyPhaseListener();
112
    PhaseListener phaseListener2 = new EmptyPhaseListener();
Lines 113-119 Link Here
113
    PhaseListener[] returnedPhaseListeners = phaseListenerManager.getPhaseListeners();
115
    PhaseListener[] returnedPhaseListeners = phaseListenerManager.getPhaseListeners();
114
    assertEquals( 2, returnedPhaseListeners.length );
116
    assertEquals( 2, returnedPhaseListeners.length );
115
  }
117
  }
116
  
118
117
  public void testAddPhaseListenersWithNullArgument() {
119
  public void testAddPhaseListenersWithNullArgument() {
118
    try {
120
    try {
119
      phaseListenerManager.addPhaseListeners( null );
121
      phaseListenerManager.addPhaseListeners( null );
Lines 121-127 Link Here
121
    } catch( NullPointerException expected ) {
123
    } catch( NullPointerException expected ) {
122
    }
124
    }
123
  }
125
  }
124
  
126
125
  public void testRemovePhaseListenerWithNullArgument() {
127
  public void testRemovePhaseListenerWithNullArgument() {
126
    try {
128
    try {
127
      phaseListenerManager.removePhaseListener( null );
129
      phaseListenerManager.removePhaseListener( null );
Lines 137-143 Link Here
137
    PhaseListener[] phaseListeners = phaseListenerManager.getPhaseListeners();
139
    PhaseListener[] phaseListeners = phaseListenerManager.getPhaseListeners();
138
    assertEquals( 0, phaseListeners.length );
140
    assertEquals( 0, phaseListeners.length );
139
  }
141
  }
140
  
142
141
  public void testRemovePhaseListenerTwice() {
143
  public void testRemovePhaseListenerTwice() {
142
    LoggingPhaseListener phaseListener = new LoggingPhaseListener( null );
144
    LoggingPhaseListener phaseListener = new LoggingPhaseListener( null );
143
    phaseListenerManager.addPhaseListener( phaseListener );
145
    phaseListenerManager.addPhaseListener( phaseListener );
Lines 146-159 Link Here
146
    PhaseListener[] phaseListeners = phaseListenerManager.getPhaseListeners();
148
    PhaseListener[] phaseListeners = phaseListenerManager.getPhaseListeners();
147
    assertEquals( 0, phaseListeners.length );
149
    assertEquals( 0, phaseListeners.length );
148
  }
150
  }
149
  
151
150
  public void testRemovePhaseListenerWithUnknownPhaseListener() {
152
  public void testRemovePhaseListenerWithUnknownPhaseListener() {
151
    phaseListenerManager.addPhaseListener( new LoggingPhaseListener( null ) );
153
    phaseListenerManager.addPhaseListener( new LoggingPhaseListener( null ) );
152
    phaseListenerManager.removePhaseListener( new LoggingPhaseListener( null ) );
154
    phaseListenerManager.removePhaseListener( new LoggingPhaseListener( null ) );
153
    PhaseListener[] phaseListeners = phaseListenerManager.getPhaseListeners();
155
    PhaseListener[] phaseListeners = phaseListenerManager.getPhaseListeners();
154
    assertEquals( 1, phaseListeners.length );
156
    assertEquals( 1, phaseListeners.length );
155
  }
157
  }
156
  
158
157
  public void testGetPhaseListenersReturnsSafeCopy() {
159
  public void testGetPhaseListenersReturnsSafeCopy() {
158
    phaseListenerManager.addPhaseListener( new LoggingPhaseListener( null ) );
160
    phaseListenerManager.addPhaseListener( new LoggingPhaseListener( null ) );
159
    PhaseListener[] phaseListeners1 = phaseListenerManager.getPhaseListeners();
161
    PhaseListener[] phaseListeners1 = phaseListenerManager.getPhaseListeners();
Lines 161-167 Link Here
161
    PhaseListener[] phaseListeners2 = phaseListenerManager.getPhaseListeners();
163
    PhaseListener[] phaseListeners2 = phaseListenerManager.getPhaseListeners();
162
    assertNotNull( phaseListeners2[ 0 ] );
164
    assertNotNull( phaseListeners2[ 0 ] );
163
  }
165
  }
164
  
166
165
  public void testAddRemovePhaseListenerConcurently() throws InterruptedException {
167
  public void testAddRemovePhaseListenerConcurently() throws InterruptedException {
166
    final int threadCount = 120;
168
    final int threadCount = 120;
167
    final List<Thread> succeededThreads = Collections.synchronizedList( new LinkedList<Thread>() );
169
    final List<Thread> succeededThreads = Collections.synchronizedList( new LinkedList<Thread>() );
Lines 188-204 Link Here
188
    phaseListenerManager.notifyBeforePhase( phase );
190
    phaseListenerManager.notifyBeforePhase( phase );
189
    assertEquals( 1, phaseListener.getLoggedEvents().length );
191
    assertEquals( 1, phaseListener.getLoggedEvents().length );
190
    PhaseEventInfo phaseEvent = phaseListener.getLoggedEvents()[ 0 ];
192
    PhaseEventInfo phaseEvent = phaseListener.getLoggedEvents()[ 0 ];
191
    assertSame( lifeCycle, phaseEvent.source ); 
193
    assertSame( lifeCycle, phaseEvent.source );
192
    assertEquals( phase, phaseEvent.phaseId );
194
    assertEquals( phase, phaseEvent.phaseId );
193
  }
195
  }
194
  
196
195
  public void testNotifyBeforePhaseWithNonMatchingListener() {
197
  public void testNotifyBeforePhaseWithNonMatchingListener() {
196
    LoggingPhaseListener phaseListener = new LoggingPhaseListener( PhaseId.RENDER );
198
    LoggingPhaseListener phaseListener = new LoggingPhaseListener( PhaseId.RENDER );
197
    phaseListenerManager.addPhaseListener( phaseListener );
199
    phaseListenerManager.addPhaseListener( phaseListener );
198
    phaseListenerManager.notifyBeforePhase( PhaseId.READ_DATA );
200
    phaseListenerManager.notifyBeforePhase( PhaseId.READ_DATA );
199
    assertEquals( 0, phaseListener.getLoggedEvents().length );
201
    assertEquals( 0, phaseListener.getLoggedEvents().length );
200
  }
202
  }
201
  
203
202
  public void testNotifyBeforePhaseWithANYListener() {
204
  public void testNotifyBeforePhaseWithANYListener() {
203
    PhaseId phase = PhaseId.READ_DATA;
205
    PhaseId phase = PhaseId.READ_DATA;
204
    LoggingPhaseListener phaseListener = new LoggingPhaseListener( PhaseId.ANY );
206
    LoggingPhaseListener phaseListener = new LoggingPhaseListener( PhaseId.ANY );
Lines 206-215 Link Here
206
    phaseListenerManager.notifyBeforePhase( phase );
208
    phaseListenerManager.notifyBeforePhase( phase );
207
    assertEquals( 1, phaseListener.getLoggedEvents().length );
209
    assertEquals( 1, phaseListener.getLoggedEvents().length );
208
    PhaseEventInfo phaseEvent = phaseListener.getLoggedEvents()[ 0 ];
210
    PhaseEventInfo phaseEvent = phaseListener.getLoggedEvents()[ 0 ];
209
    assertSame( lifeCycle, phaseEvent.source ); 
211
    assertSame( lifeCycle, phaseEvent.source );
210
    assertEquals( phase, phaseEvent.phaseId );
212
    assertEquals( phase, phaseEvent.phaseId );
211
  }
213
  }
212
  
214
213
  public void testExceptionsInBeforePhaseEvent() {
215
  public void testExceptionsInBeforePhaseEvent() {
214
    phaseListenerManager.addPhaseListener( new ExceptionPhaseListener() );
216
    phaseListenerManager.addPhaseListener( new ExceptionPhaseListener() );
215
    phaseListenerManager.addPhaseListener( new ExceptionPhaseListener() );
217
    phaseListenerManager.addPhaseListener( new ExceptionPhaseListener() );
Lines 232-248 Link Here
232
    phaseListenerManager.addPhaseListener( phaseListener );
234
    phaseListenerManager.addPhaseListener( phaseListener );
233
    phaseListenerManager.notifyAfterPhase( phase );
235
    phaseListenerManager.notifyAfterPhase( phase );
234
    assertEquals( 1, phaseListener.getLoggedEvents().length );
236
    assertEquals( 1, phaseListener.getLoggedEvents().length );
235
    assertSame( lifeCycle, phaseListener.getLoggedEvents()[ 0 ].source ); 
237
    assertSame( lifeCycle, phaseListener.getLoggedEvents()[ 0 ].source );
236
    assertEquals( phase, phaseListener.getLoggedEvents()[ 0 ].phaseId );
238
    assertEquals( phase, phaseListener.getLoggedEvents()[ 0 ].phaseId );
237
  }
239
  }
238
  
240
239
  public void testNotifyAfterPhaseWithNonMatchingListener() {
241
  public void testNotifyAfterPhaseWithNonMatchingListener() {
240
    LoggingPhaseListener phaseListener = new LoggingPhaseListener( PhaseId.RENDER );
242
    LoggingPhaseListener phaseListener = new LoggingPhaseListener( PhaseId.RENDER );
241
    phaseListenerManager.addPhaseListener( phaseListener );
243
    phaseListenerManager.addPhaseListener( phaseListener );
242
    phaseListenerManager.notifyAfterPhase( PhaseId.READ_DATA );
244
    phaseListenerManager.notifyAfterPhase( PhaseId.READ_DATA );
243
    assertEquals( 0, phaseListener.getLoggedEvents().length );
245
    assertEquals( 0, phaseListener.getLoggedEvents().length );
244
  }
246
  }
245
  
247
246
  public void testNotifyAfterPhaseWithANYListener() {
248
  public void testNotifyAfterPhaseWithANYListener() {
247
    PhaseId phase = PhaseId.READ_DATA;
249
    PhaseId phase = PhaseId.READ_DATA;
248
    LoggingPhaseListener phaseListener = new LoggingPhaseListener( PhaseId.ANY );
250
    LoggingPhaseListener phaseListener = new LoggingPhaseListener( PhaseId.ANY );
Lines 250-259 Link Here
250
    phaseListenerManager.notifyAfterPhase( phase );
252
    phaseListenerManager.notifyAfterPhase( phase );
251
    assertEquals( 1, phaseListener.getLoggedEvents().length );
253
    assertEquals( 1, phaseListener.getLoggedEvents().length );
252
    PhaseEventInfo phaseEvent = phaseListener.getLoggedEvents()[ 0 ];
254
    PhaseEventInfo phaseEvent = phaseListener.getLoggedEvents()[ 0 ];
253
    assertSame( lifeCycle, phaseEvent.source ); 
255
    assertSame( lifeCycle, phaseEvent.source );
254
    assertEquals( phase, phaseEvent.phaseId );
256
    assertEquals( phase, phaseEvent.phaseId );
255
  }
257
  }
256
  
258
257
  public void testExceptionsInAfterPhaseEvent() {
259
  public void testExceptionsInAfterPhaseEvent() {
258
    phaseListenerManager.addPhaseListener( new ExceptionPhaseListener() );
260
    phaseListenerManager.addPhaseListener( new ExceptionPhaseListener() );
259
    phaseListenerManager.addPhaseListener( new ExceptionPhaseListener() );
261
    phaseListenerManager.addPhaseListener( new ExceptionPhaseListener() );
Lines 270-275 Link Here
270
    }
272
    }
271
  }
273
  }
272
274
275
  // see bug 372960
276
  public void testCurrentPhaseMatchPhaseEventPhase() {
277
    new Display();
278
    final List<PhaseId> log = new ArrayList<PhaseId>();
279
    RWT.getLifeCycle().addPhaseListener( new PhaseListener() {
280
      public PhaseId getPhaseId() {
281
        return PhaseId.PROCESS_ACTION;
282
      }
283
      public void beforePhase( PhaseEvent event ) {
284
        log.add( CurrentPhase.get() );
285
        log.add( event.getPhaseId() );
286
      }
287
      public void afterPhase( PhaseEvent event ) {
288
      }
289
    } );
290
291
    Fixture.executeLifeCycleFromServerThread();
292
293
    assertEquals( log.get( 0 ), log.get( 1 ) );
294
  }
295
296
  @Override
273
  protected void setUp() throws Exception {
297
  protected void setUp() throws Exception {
274
    Fixture.setUp();
298
    Fixture.setUp();
275
    lifeCycle = new TestLifeCycle();
299
    lifeCycle = new TestLifeCycle();
Lines 278-283 Link Here
278
    setupServletContextLog();
302
    setupServletContextLog();
279
  }
303
  }
280
304
305
  @Override
281
  protected void tearDown() throws Exception {
306
  protected void tearDown() throws Exception {
282
    Fixture.tearDown();
307
    Fixture.tearDown();
283
  }
308
  }

Return to bug 372960