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/application/ApplicationContextConfigurator.java (-3 / +2 lines)
Lines 1-5 Link Here
1
/*******************************************************************************
1
/*******************************************************************************
2
 * Copyright (c) 2011 Frank Appel and others.
2
 * Copyright (c) 2011, 2012 Frank Appel 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 7-12 Link Here
7
 *
7
 *
8
 * Contributors:
8
 * Contributors:
9
 *    Frank Appel - initial API and implementation
9
 *    Frank Appel - initial API and implementation
10
 *    EclipseSource - ongoing development
10
 ******************************************************************************/
11
 ******************************************************************************/
11
package org.eclipse.rwt.internal.application;
12
package org.eclipse.rwt.internal.application;
12
13
Lines 15-21 Link Here
15
import org.eclipse.rwt.application.ApplicationConfigurator;
16
import org.eclipse.rwt.application.ApplicationConfigurator;
16
import org.eclipse.rwt.internal.engine.RWTConfiguration;
17
import org.eclipse.rwt.internal.engine.RWTConfiguration;
17
import org.eclipse.rwt.internal.engine.RWTConfigurationImpl;
18
import org.eclipse.rwt.internal.engine.RWTConfigurationImpl;
18
import org.eclipse.rwt.internal.lifecycle.CurrentPhase;
19
import org.eclipse.rwt.internal.service.ApplicationStoreImpl;
19
import org.eclipse.rwt.internal.service.ApplicationStoreImpl;
20
import org.eclipse.rwt.internal.service.ServiceManager;
20
import org.eclipse.rwt.internal.service.ServiceManager;
21
import org.eclipse.rwt.internal.textsize.MeasurementListener;
21
import org.eclipse.rwt.internal.textsize.MeasurementListener;
Lines 92-98 Link Here
92
  }
92
  }
93
93
94
  private void addInternalPhaseListeners( ApplicationContext applicationContext ) {
94
  private void addInternalPhaseListeners( ApplicationContext applicationContext ) {
95
    applicationContext.getPhaseListenerRegistry().add( new CurrentPhase.Listener() );
96
    applicationContext.getPhaseListenerRegistry().add( new MeasurementListener() );
95
    applicationContext.getPhaseListenerRegistry().add( new MeasurementListener() );
97
  }
96
  }
98
97
(-)src/org/eclipse/rwt/internal/lifecycle/CurrentPhase.java (-18 / +2 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 18-40 Link Here
18
18
19
public final class CurrentPhase {
19
public final class CurrentPhase {
20
20
21
  public static final class Listener implements PhaseListener {
21
  private static final String ATTR_CURRENT_PHASE = CurrentPhase.class.getName() + "#value";
22
23
    public void beforePhase( PhaseEvent event ) {
24
      set( event.getPhaseId() );
25
    }
26
27
    public void afterPhase( PhaseEvent event ) {
28
      // do nothing
29
    }
30
31
    public PhaseId getPhaseId() {
32
      return PhaseId.ANY;
33
    }
34
  }
35
36
  private static final String ATTR_CURRENT_PHASE
37
    = CurrentPhase.class.getName() + "#value";
38
22
39
  private CurrentPhase() {
23
  private CurrentPhase() {
40
    // prevent instantiation
24
    // prevent instantiation
(-)src/org/eclipse/rwt/internal/lifecycle/PhaseExecutor.java (-2 / +3 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 30-42 Link Here
30
    PhaseId currentPhaseId = startPhaseId;
30
    PhaseId currentPhaseId = startPhaseId;
31
    while( currentPhaseId != null ) {
31
    while( currentPhaseId != null ) {
32
      IPhase currentPhase = findPhase( currentPhaseId );
32
      IPhase currentPhase = findPhase( currentPhaseId );
33
      CurrentPhase.set( currentPhaseId );
33
      phaseListenerManager.notifyBeforePhase( currentPhaseId );
34
      phaseListenerManager.notifyBeforePhase( currentPhaseId );
34
      PhaseId nextPhaseId = currentPhase.execute( getDisplay() );
35
      PhaseId nextPhaseId = currentPhase.execute( getDisplay() );
35
      phaseListenerManager.notifyAfterPhase( currentPhaseId );
36
      phaseListenerManager.notifyAfterPhase( currentPhaseId );
36
      currentPhaseId = nextPhaseId;
37
      currentPhaseId = nextPhaseId;
37
    }
38
    }
38
  }
39
  }
39
  
40
40
  abstract Display getDisplay();
41
  abstract Display getDisplay();
41
42
42
  private IPhase findPhase( PhaseId phaseId ) {
43
  private IPhase findPhase( PhaseId phaseId ) {
(-)src/org/eclipse/rwt/internal/lifecycle/RWTLifeCycle.java (+1 lines)
Lines 145-150 Link Here
145
      boolean interrupted = false;
145
      boolean interrupted = false;
146
      for( int i = start; !interrupted && i < phaseOrder.length; i++ ) {
146
      for( int i = start; !interrupted && i < phaseOrder.length; i++ ) {
147
        IPhase phase = phaseOrder[ i ];
147
        IPhase phase = phaseOrder[ i ];
148
        CurrentPhase.set( phase.getPhaseId() );
148
        phaseListenerManager.notifyBeforePhase( phase.getPhaseId() );
149
        phaseListenerManager.notifyBeforePhase( phase.getPhaseId() );
149
        if( phase instanceof IInterruptible ) {
150
        if( phase instanceof IInterruptible ) {
150
          // IInterruptible phases return control to the user code, thus they don't call
151
          // IInterruptible phases return control to the user code, thus they don't call
(-)src/org/eclipse/rwt/engine/RWTServletContextListener_Test.java (-1 / +1 lines)
Lines 108-114 Link Here
108
108
109
  private void assertPhaseListenersAreRegistered() {
109
  private void assertPhaseListenersAreRegistered() {
110
    ApplicationContext applicationContext = ApplicationContextUtil.get( servletContext );
110
    ApplicationContext applicationContext = ApplicationContextUtil.get( servletContext );
111
    assertEquals( 3, applicationContext.getPhaseListenerRegistry().getAll().length );
111
    assertEquals( 2, applicationContext.getPhaseListenerRegistry().getAll().length );
112
  }
112
  }
113
113
114
  private void assertResourceIsRegistered() {
114
  private void assertResourceIsRegistered() {
(-)src/org/eclipse/rwt/internal/application/ApplicationContextConfigurator_Test.java (-3 / +1 lines)
Lines 30-36 Link Here
30
import org.eclipse.rwt.internal.AdapterManager;
30
import org.eclipse.rwt.internal.AdapterManager;
31
import org.eclipse.rwt.internal.engine.RWTConfiguration;
31
import org.eclipse.rwt.internal.engine.RWTConfiguration;
32
import org.eclipse.rwt.internal.engine.RWTConfigurationImpl;
32
import org.eclipse.rwt.internal.engine.RWTConfigurationImpl;
33
import org.eclipse.rwt.internal.lifecycle.CurrentPhase;
34
import org.eclipse.rwt.internal.service.ServiceManager;
33
import org.eclipse.rwt.internal.service.ServiceManager;
35
import org.eclipse.rwt.internal.textsize.MeasurementListener;
34
import org.eclipse.rwt.internal.textsize.MeasurementListener;
36
import org.eclipse.rwt.internal.theme.Theme;
35
import org.eclipse.rwt.internal.theme.Theme;
Lines 320-327 Link Here
320
  }
319
  }
321
320
322
  private void checkPhaseListenersHaveBeenAdded() {
321
  private void checkPhaseListenersHaveBeenAdded() {
323
    assertEquals( 3, applicationContext.getPhaseListenerRegistry().getAll().length );
322
    assertEquals( 2, applicationContext.getPhaseListenerRegistry().getAll().length );
324
    assertEquals( true, findPhaseListener( CurrentPhase.Listener.class ) );
325
    assertEquals( true, findPhaseListener( MeasurementListener.class ) );
323
    assertEquals( true, findPhaseListener( MeasurementListener.class ) );
326
    assertEquals( true, findPhaseListener( TestPhaseListener.class ) );
324
    assertEquals( true, findPhaseListener( TestPhaseListener.class ) );
327
  }
325
  }
(-)src/org/eclipse/rwt/internal/lifecycle/PhaseExecutor_Test.java (-9 / +18 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 16-21 Link Here
16
16
17
import junit.framework.TestCase;
17
import junit.framework.TestCase;
18
18
19
import org.eclipse.rap.rwt.testfixture.Fixture;
19
import org.eclipse.rap.rwt.testfixture.internal.LoggingPhaseListener;
20
import org.eclipse.rap.rwt.testfixture.internal.LoggingPhaseListener;
20
import org.eclipse.rap.rwt.testfixture.internal.LoggingPhaseListener.PhaseEventInfo;
21
import org.eclipse.rap.rwt.testfixture.internal.LoggingPhaseListener.PhaseEventInfo;
21
import org.eclipse.rwt.lifecycle.*;
22
import org.eclipse.rwt.lifecycle.*;
Lines 30-35 Link Here
30
      super( phaseListenerManager, phases );
31
      super( phaseListenerManager, phases );
31
    }
32
    }
32
33
34
    @Override
33
    Display getDisplay() {
35
    Display getDisplay() {
34
      return null;
36
      return null;
35
    }
37
    }
Lines 41-53 Link Here
41
    public void addPhaseListener( PhaseListener listener ) {
43
    public void addPhaseListener( PhaseListener listener ) {
42
    }
44
    }
43
  }
45
  }
44
  
46
45
  private static class TestPhase implements IPhase {
47
  private static class TestPhase implements IPhase {
46
48
47
    private final List<IPhase> executionLog;
49
    private final List<IPhase> executionLog;
48
    private final PhaseId phaseId;
50
    private final PhaseId phaseId;
49
    private final PhaseId nextPhaseId;
51
    private final PhaseId nextPhaseId;
50
    
52
51
    TestPhase( List<IPhase> executionLog, PhaseId phaseId, PhaseId nextPhaseId ) {
53
    TestPhase( List<IPhase> executionLog, PhaseId phaseId, PhaseId nextPhaseId ) {
52
      this.executionLog = executionLog;
54
      this.executionLog = executionLog;
53
      this.phaseId = phaseId;
55
      this.phaseId = phaseId;
Lines 69-77 Link Here
69
71
70
  public void testExecute() throws IOException {
72
  public void testExecute() throws IOException {
71
    List<IPhase> executionLog = new LinkedList<IPhase>();
73
    List<IPhase> executionLog = new LinkedList<IPhase>();
72
    IPhase[] phases = new IPhase[] { 
74
    IPhase[] phases = new IPhase[] {
73
      new TestPhase( executionLog, PhaseId.PREPARE_UI_ROOT, PhaseId.RENDER ), 
75
      new TestPhase( executionLog, PhaseId.PREPARE_UI_ROOT, PhaseId.RENDER ),
74
      new TestPhase( executionLog, PhaseId.RENDER, null ) 
76
      new TestPhase( executionLog, PhaseId.RENDER, null )
75
    };
77
    };
76
    PhaseExecutor phaseExecutor = new TestPhaseExecutor( phaseListenerManager, phases );
78
    PhaseExecutor phaseExecutor = new TestPhaseExecutor( phaseListenerManager, phases );
77
    phaseExecutor.execute( PhaseId.PREPARE_UI_ROOT );
79
    phaseExecutor.execute( PhaseId.PREPARE_UI_ROOT );
Lines 79-90 Link Here
79
    assertSame( phases[ 0 ], executionLog.get( 0 ) );
81
    assertSame( phases[ 0 ], executionLog.get( 0 ) );
80
    assertSame( phases[ 1 ], executionLog.get( 1 ) );
82
    assertSame( phases[ 1 ], executionLog.get( 1 ) );
81
  }
83
  }
82
  
84
83
  public void testExecuteNotifiesPhaseListener() throws IOException {
85
  public void testExecuteNotifiesPhaseListener() throws IOException {
84
    LoggingPhaseListener phaseListener = new LoggingPhaseListener( PhaseId.ANY );
86
    LoggingPhaseListener phaseListener = new LoggingPhaseListener( PhaseId.ANY );
85
    phaseListenerManager.addPhaseListener( phaseListener );
87
    phaseListenerManager.addPhaseListener( phaseListener );
86
    IPhase[] phases = new IPhase[] { 
88
    IPhase[] phases = new IPhase[] {
87
      new TestPhase( new LinkedList<IPhase>(), PhaseId.PREPARE_UI_ROOT, null ), 
89
      new TestPhase( new LinkedList<IPhase>(), PhaseId.PREPARE_UI_ROOT, null ),
88
    };
90
    };
89
    PhaseExecutor phaseExecutor = new TestPhaseExecutor( phaseListenerManager, phases );
91
    PhaseExecutor phaseExecutor = new TestPhaseExecutor( phaseListenerManager, phases );
90
    phaseExecutor.execute( PhaseId.PREPARE_UI_ROOT );
92
    phaseExecutor.execute( PhaseId.PREPARE_UI_ROOT );
Lines 100-107 Link Here
100
    assertSame( lifeCycle, afterPrepareUIRoot.source );
102
    assertSame( lifeCycle, afterPrepareUIRoot.source );
101
  }
103
  }
102
104
105
  @Override
103
  protected void setUp() throws Exception {
106
  protected void setUp() throws Exception {
107
    Fixture.setUp();
104
    lifeCycle = new TestLifeCycle();
108
    lifeCycle = new TestLifeCycle();
105
    phaseListenerManager = new PhaseListenerManager( lifeCycle );
109
    phaseListenerManager = new PhaseListenerManager( lifeCycle );
106
  }
110
  }
111
112
  @Override
113
  protected void tearDown() throws Exception {
114
    Fixture.tearDown();
115
  }
107
}
116
}
(-)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