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 288454
Collapse All | Expand All

(-)src/org/eclipse/swt/internal/widgets/WidgetAdapterFactory.java (-57 lines)
Removed Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2002, 2007 Innoopract Informationssysteme GmbH.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     Innoopract Informationssysteme GmbH - initial API and implementation
10
 ******************************************************************************/
11
12
package org.eclipse.swt.internal.widgets;
13
14
import java.util.HashMap;
15
import java.util.Map;
16
17
import org.eclipse.rwt.AdapterFactory;
18
import org.eclipse.rwt.lifecycle.IWidgetAdapter;
19
import org.eclipse.swt.widgets.Display;
20
import org.eclipse.swt.widgets.Widget;
21
22
23
//TODO [rh] This class is currently not in use, see Display#getAdater() and 
24
//     Widget#getAdapter()
25
public final class WidgetAdapterFactory implements AdapterFactory {
26
27
  private static final Class[] ADAPTER_LIST = new Class[] { 
28
    IWidgetAdapter.class 
29
  };
30
31
  // Map keeping the association between extensions and a set of objects. 
32
  // Key: Object (adaptable), value: IWidgetAdapter (adapter).
33
  private final Map map = new HashMap();
34
35
  public Object getAdapter( final Object adaptable, final Class adapter ) {
36
    // Note [fappel]: Since this code is performance critical, don't change
37
    //                anything without checking it against a profiler.
38
    Object result = null;
39
    if (   ( adaptable instanceof Display || adaptable instanceof Widget ) 
40
         && adapter == IWidgetAdapter.class ) 
41
    {
42
      // [fappel] We use a hash as key to avoid using WeakHashMap, which doesn't
43
      //          perform as well as a simple HashMap.
44
      Integer hash = new Integer( adaptable.hashCode() );
45
      result = map.get( hash );
46
      if( result == null ) {
47
        result = new WidgetAdapter( IdGenerator.getInstance().newId() );
48
        map.put( hash, result );
49
      }
50
    }
51
    return result;
52
  }
53
54
  public Class[] getAdapterList() {
55
    return ADAPTER_LIST;
56
  }
57
}
(-)src/org/eclipse/rwt/internal/engine/RWTServletContextListener.java (-5 lines)
Lines 30-36 Link Here
30
import org.eclipse.rwt.resources.IResourceManagerFactory;
30
import org.eclipse.rwt.resources.IResourceManagerFactory;
31
import org.eclipse.rwt.service.ISettingStoreFactory;
31
import org.eclipse.rwt.service.ISettingStoreFactory;
32
import org.eclipse.rwt.service.RWTFileSettingStoreFactory;
32
import org.eclipse.rwt.service.RWTFileSettingStoreFactory;
33
import org.eclipse.swt.internal.widgets.WidgetAdapterFactory;
34
import org.eclipse.swt.widgets.Display;
33
import org.eclipse.swt.widgets.Display;
35
import org.eclipse.swt.widgets.Widget;
34
import org.eclipse.swt.widgets.Widget;
36
35
Lines 231-240 Link Here
231
                                  Widget.class );
230
                                  Widget.class );
232
      AdapterFactoryRegistry.add( LifeCycleAdapterFactory.class,
231
      AdapterFactoryRegistry.add( LifeCycleAdapterFactory.class,
233
                                  Display.class );
232
                                  Display.class );
234
      AdapterFactoryRegistry.add( WidgetAdapterFactory.class,
235
                                  Widget.class );
236
      AdapterFactoryRegistry.add( WidgetAdapterFactory.class,
237
                                  Display.class );
238
    }
233
    }
239
  }
234
  }
240
235
(-)src/org/eclipse/swt/widgets/Widget.java (-12 / +7 lines)
Lines 149-168 Link Here
149
  public Object getAdapter( final Class adapter ) {
149
  public Object getAdapter( final Class adapter ) {
150
    Object result;
150
    Object result;
151
    if( adapter == IEventAdapter.class ) {
151
    if( adapter == IEventAdapter.class ) {
152
      // //////////////////////////////////////////////////////
152
      // Note: This is not implemented via the AdapterManager, since the 
153
      // Note: This is not implemented via the AdapterManager,
153
      // manager's mapping mechanism prevents the component being released 
154
      // since the manager's mapping mechanism prevents
154
      // unless the session is invalidated.
155
      // the component being released unless the session
156
      // is invalidated.
157
      if( eventAdapter == null ) {
155
      if( eventAdapter == null ) {
158
        eventAdapter = new EventAdapter();
156
        eventAdapter = new EventAdapter();
159
      }
157
      }
160
      result = eventAdapter;
158
      result = eventAdapter;
161
    } else if( adapter == IWidgetAdapter.class ) {
159
    } else if( adapter == IWidgetAdapter.class ) {
162
      // TODO: [fappel] this is done for performance improvement and replaces
160
      // [fappel] Directly return the WidgetAdapter instead of consulting the
163
      //                the lookup in WidgetAdapterFactory. Since this is still
161
      // adapter factory. This is done for performance reasons and must not 
164
      //                a matter of investigation, WidgetAdapterFactory is not
162
      // be changed without good reason.
165
      //                changed yet.
166
      if( widgetAdapter == null ) {
163
      if( widgetAdapter == null ) {
167
        widgetAdapter = new WidgetAdapter();
164
        widgetAdapter = new WidgetAdapter();
168
      }
165
      }
Lines 173-181 Link Here
173
      }
170
      }
174
      result = widgetGraphicsAdapter;
171
      result = widgetGraphicsAdapter;
175
    } else {
172
    } else {
176
      // TODO: [fappel] buffer the adapterManager for performance improvement.
173
      // [fappel] Buffer the adapterManager to improve performance
177
      //                Note: this is still a matter of investigation since
178
      //                we improve cpu time on cost of memory consumption.
179
      if( adapterManager == null ) {
174
      if( adapterManager == null ) {
180
        adapterManager = AdapterManagerImpl.getInstance();
175
        adapterManager = AdapterManagerImpl.getInstance();
181
      }
176
      }
(-)plugin.xml (-6 lines)
Lines 2221-2232 Link Here
2221
    <factory
2221
    <factory
2222
        factoryClass="org.eclipse.rwt.internal.lifecycle.LifeCycleAdapterFactory"
2222
        factoryClass="org.eclipse.rwt.internal.lifecycle.LifeCycleAdapterFactory"
2223
        adaptableClass="org.eclipse.swt.widgets.Display"/>
2223
        adaptableClass="org.eclipse.swt.widgets.Display"/>
2224
    <factory
2225
        factoryClass="org.eclipse.swt.internal.widgets.WidgetAdapterFactory"
2226
        adaptableClass="org.eclipse.swt.widgets.Widget"/>
2227
    <factory
2228
        factoryClass="org.eclipse.swt.internal.widgets.WidgetAdapterFactory"
2229
        adaptableClass="org.eclipse.swt.widgets.Display"/>
2230
  </extension>
2224
  </extension>
2231
2225
2232
  <extension
2226
  <extension
(-)src/org/eclipse/rwt/internal/lifecycle/PreserveWidgetsPhaseListener_Test.java (-4 lines)
Lines 31-37 Link Here
31
import org.eclipse.swt.SWT;
31
import org.eclipse.swt.SWT;
32
import org.eclipse.swt.graphics.Device;
32
import org.eclipse.swt.graphics.Device;
33
import org.eclipse.swt.internal.widgets.Props;
33
import org.eclipse.swt.internal.widgets.Props;
34
import org.eclipse.swt.internal.widgets.WidgetAdapterFactory;
35
import org.eclipse.swt.widgets.*;
34
import org.eclipse.swt.widgets.*;
36
35
37
public class PreserveWidgetsPhaseListener_Test extends TestCase {
36
public class PreserveWidgetsPhaseListener_Test extends TestCase {
Lines 179-187 Link Here
179
    AdapterManager manager = AdapterManagerImpl.getInstance();
178
    AdapterManager manager = AdapterManagerImpl.getInstance();
180
    manager.registerAdapters( lifeCycleAdapterFactory, Display.class );
179
    manager.registerAdapters( lifeCycleAdapterFactory, Display.class );
181
    manager.registerAdapters( lifeCycleAdapterFactory, Widget.class );
180
    manager.registerAdapters( lifeCycleAdapterFactory, Widget.class );
182
    WidgetAdapterFactory widgetAdapterFactory = new WidgetAdapterFactory();
183
    manager.registerAdapters( widgetAdapterFactory, Display.class );
184
    manager.registerAdapters( widgetAdapterFactory, Widget.class );
185
    RWTFixture.registerResourceManager();
181
    RWTFixture.registerResourceManager();
186
    // Create test widget hierarchy
182
    // Create test widget hierarchy
187
    Display display = new Display();
183
    Display display = new Display();
(-)src/org/eclipse/rwt/internal/lifecycle/RWTLifeCycle2_Test.java (-5 lines)
Lines 32-38 Link Here
32
import org.eclipse.swt.SWT;
32
import org.eclipse.swt.SWT;
33
import org.eclipse.swt.events.*;
33
import org.eclipse.swt.events.*;
34
import org.eclipse.swt.internal.graphics.ResourceFactory;
34
import org.eclipse.swt.internal.graphics.ResourceFactory;
35
import org.eclipse.swt.internal.widgets.WidgetAdapterFactory;
36
import org.eclipse.swt.layout.FillLayout;
35
import org.eclipse.swt.layout.FillLayout;
37
import org.eclipse.swt.widgets.*;
36
import org.eclipse.swt.widgets.*;
38
37
Lines 321-330 Link Here
321
                                Widget.class );
320
                                Widget.class );
322
    AdapterFactoryRegistry.add( LifeCycleAdapterFactory.class,
321
    AdapterFactoryRegistry.add( LifeCycleAdapterFactory.class,
323
                                Display.class );
322
                                Display.class );
324
    AdapterFactoryRegistry.add( WidgetAdapterFactory.class,
325
                                Widget.class );
326
    AdapterFactoryRegistry.add( WidgetAdapterFactory.class,
327
                                Display.class );
328
    session = new TestSession();
323
    session = new TestSession();
329
    ServletContext servletContext = session.getServletContext();
324
    ServletContext servletContext = session.getServletContext();
330
    TestServletContext servletContextImpl
325
    TestServletContext servletContextImpl
(-)src/org/eclipse/swt/internal/widgets/displaykit/DisplayLCA_Test.java (-6 lines)
Lines 40-46 Link Here
40
public class DisplayLCA_Test extends TestCase {
40
public class DisplayLCA_Test extends TestCase {
41
41
42
  private AdapterFactory lifeCycleAdapterFactory;
42
  private AdapterFactory lifeCycleAdapterFactory;
43
  private WidgetAdapterFactory widgetAdapterFactory;
44
  private final List log = new ArrayList();
43
  private final List log = new ArrayList();
45
  private final List renderInitLog = new ArrayList();
44
  private final List renderInitLog = new ArrayList();
46
  private final List renderChangesLog = new ArrayList();
45
  private final List renderChangesLog = new ArrayList();
Lines 447-455 Link Here
447
    };
446
    };
448
    manager.registerAdapters( lifeCycleAdapterFactory, Display.class );
447
    manager.registerAdapters( lifeCycleAdapterFactory, Display.class );
449
    manager.registerAdapters( lifeCycleAdapterFactory, Widget.class );
448
    manager.registerAdapters( lifeCycleAdapterFactory, Widget.class );
450
    widgetAdapterFactory = new WidgetAdapterFactory();
451
    manager.registerAdapters( widgetAdapterFactory, Display.class );
452
    manager.registerAdapters( widgetAdapterFactory, Widget.class );
453
    clearLogs();
449
    clearLogs();
454
    RWTFixture.registerResourceManager();
450
    RWTFixture.registerResourceManager();
455
    PhaseListenerRegistry.add( new CurrentPhase.Listener() );
451
    PhaseListenerRegistry.add( new CurrentPhase.Listener() );
Lines 460-467 Link Here
460
    AdapterManager manager = AdapterManagerImpl.getInstance();
456
    AdapterManager manager = AdapterManagerImpl.getInstance();
461
    manager.deregisterAdapters( lifeCycleAdapterFactory, Display.class );
457
    manager.deregisterAdapters( lifeCycleAdapterFactory, Display.class );
462
    manager.deregisterAdapters( lifeCycleAdapterFactory, Widget.class );
458
    manager.deregisterAdapters( lifeCycleAdapterFactory, Widget.class );
463
    manager.deregisterAdapters( widgetAdapterFactory, Display.class );
464
    manager.deregisterAdapters( widgetAdapterFactory, Widget.class );
465
    RWTFixture.deregisterResourceManager();
459
    RWTFixture.deregisterResourceManager();
466
    String[] entryPoints = EntryPointManager.getEntryPoints();
460
    String[] entryPoints = EntryPointManager.getEntryPoints();
467
    for( int i = 0; i < entryPoints.length; i++ ) {
461
    for( int i = 0; i < entryPoints.length; i++ ) {
(-)src/org/eclipse/swt/RWTFixture.java (-7 lines)
Lines 34-40 Link Here
34
import org.eclipse.rwt.service.ISessionStore;
34
import org.eclipse.rwt.service.ISessionStore;
35
import org.eclipse.swt.internal.graphics.ResourceFactory;
35
import org.eclipse.swt.internal.graphics.ResourceFactory;
36
import org.eclipse.swt.internal.widgets.WidgetAdapter;
36
import org.eclipse.swt.internal.widgets.WidgetAdapter;
37
import org.eclipse.swt.internal.widgets.WidgetAdapterFactory;
38
import org.eclipse.swt.widgets.Display;
37
import org.eclipse.swt.widgets.Display;
39
import org.eclipse.swt.widgets.Widget;
38
import org.eclipse.swt.widgets.Widget;
40
39
Lines 147-153 Link Here
147
  public static final String IMAGE_BLANK_PIXEL = "resources/images/blank.gif";
146
  public static final String IMAGE_BLANK_PIXEL = "resources/images/blank.gif";
148
147
149
  private static LifeCycleAdapterFactory lifeCycleAdapterFactory;
148
  private static LifeCycleAdapterFactory lifeCycleAdapterFactory;
150
  private static WidgetAdapterFactory widgetAdapterFactory;
151
  private static PhaseListener currentPhaseListener
149
  private static PhaseListener currentPhaseListener
152
    = new CurrentPhase.Listener();
150
    = new CurrentPhase.Listener();
153
151
Lines 217-231 Link Here
217
    lifeCycleAdapterFactory = new LifeCycleAdapterFactory();
215
    lifeCycleAdapterFactory = new LifeCycleAdapterFactory();
218
    manager.registerAdapters( lifeCycleAdapterFactory, Display.class );
216
    manager.registerAdapters( lifeCycleAdapterFactory, Display.class );
219
    manager.registerAdapters( lifeCycleAdapterFactory, Widget.class );
217
    manager.registerAdapters( lifeCycleAdapterFactory, Widget.class );
220
    widgetAdapterFactory = new WidgetAdapterFactory();
221
    manager.registerAdapters( widgetAdapterFactory, Display.class );
222
    manager.registerAdapters( widgetAdapterFactory, Widget.class );
223
  }
218
  }
224
219
225
  public static void deregisterAdapterFactories() {
220
  public static void deregisterAdapterFactories() {
226
    AdapterManager manager = AdapterManagerImpl.getInstance();
221
    AdapterManager manager = AdapterManagerImpl.getInstance();
227
    manager.deregisterAdapters( widgetAdapterFactory, Display.class );
228
    manager.deregisterAdapters( widgetAdapterFactory, Widget.class );
229
    manager.deregisterAdapters( lifeCycleAdapterFactory, Display.class );
222
    manager.deregisterAdapters( lifeCycleAdapterFactory, Display.class );
230
    manager.deregisterAdapters( lifeCycleAdapterFactory, Widget.class );
223
    manager.deregisterAdapters( lifeCycleAdapterFactory, Widget.class );
231
  }
224
  }

Return to bug 288454