/******************************************************************************* * Copyright (c) 2002, 2007 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 * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Innoopract Informationssysteme GmbH - initial API and implementation ******************************************************************************/ package org.eclipse.rwt; import junit.framework.TestCase; import org.eclipse.rwt.internal.AdapterManager; import org.eclipse.rwt.internal.AdapterManagerImpl; public class AdapterManager_Test extends TestCase { protected void setUp() throws Exception { Fixture.fakeContext(); } protected void tearDown() throws Exception { Fixture.tearDown(); } public void testAdapterManager() throws Exception { AdapterFactory adapterFactory = new AdapterFactory() { public Object getAdapter( final Object adaptable, final Class adapter ) { IDummyType dummy = ( IDummyType )adaptable; return new DummyAdapter( dummy ); } public Class[] getAdapterList() { return new Class[] { IDummyAdapter.class }; } }; AdapterManager manager = AdapterManagerImpl.getInstance(); manager.registerAdapters( adapterFactory, IDummyType.class ); Dummy dummy = new Dummy(); Object adapter = dummy.getAdapter( IDummyAdapter.class ); assertTrue( adapter != null ); assertTrue( adapter instanceof IDummyAdapter ); adapter = dummy.getAdapter( Concealer.class ); assertTrue( adapter == null ); AdapterFactory adapterFactory2 = new AdapterFactory() { public Object getAdapter( final Object adaptable, final Class adapter ) { IDummyType dummy = ( IDummyType )adaptable; Object result = null; if( adapter == IDummyAdapter2.class ) { result = new DummyAdapter2( dummy ); } else if( adapter == Concealer.class ) { result = new Concealer(){ }; } return result; } public Class[] getAdapterList() { return new Class[] { IDummyAdapter2.class, Concealer.class }; } }; manager.registerAdapters( adapterFactory2, IDummyType.class ); adapter = dummy.getAdapter( IDummyAdapter2.class ); assertTrue( adapter != null ); assertTrue( adapter instanceof IDummyAdapter2 ); adapter = dummy.getAdapter( Concealer.class ); assertTrue( adapter != null ); assertTrue( adapter instanceof Concealer ); manager.deregisterAdapters( adapterFactory, IDummyType.class ); adapter = dummy.getAdapter( IDummyAdapter.class ); assertTrue( adapter == null ); adapter = dummy.getAdapter( Concealer.class ); assertTrue( adapter != null ); assertTrue( adapter instanceof Concealer ); } ///////////// // test types public interface Concealer { // empty, used only for test case } class Dummy implements IDummyType, Adaptable { public void doNothing() { } public Object getAdapter( final Class adapter ) { return AdapterManagerImpl.getInstance().getAdapter( this, adapter ); } } class DummyAdapter implements IDummyAdapter { DummyAdapter( final IDummyType dummy ) {} public void doAnyThing() {} } class DummyAdapter2 implements IDummyAdapter2 { DummyAdapter2( final IDummyType dummy ) {} public void doSomesThing() {} } interface IDummyAdapter { void doAnyThing(); } interface IDummyAdapter2 { void doSomesThing(); } interface IDummyType { void doNothing(); } }