001 package org.picocontainer.defaults; 002 003 import java.awt.event.ActionEvent; 004 import java.awt.event.ActionListener; 005 import java.awt.event.MouseEvent; 006 import java.awt.event.MouseListener; 007 008 import junit.framework.TestCase; 009 010 import org.picocontainer.ComponentAdapter; 011 import org.picocontainer.Parameter; 012 import org.picocontainer.PicoIntrospectionException; 013 import org.picocontainer.defaults.ComponentAdapterFactory; 014 import org.picocontainer.defaults.ConstructorInjectionComponentAdapter; 015 import org.picocontainer.defaults.ConstructorInjectionComponentAdapterFactory; 016 import org.picocontainer.defaults.ImplementationHidingComponentAdapter; 017 import org.picocontainer.defaults.ImplementationHidingComponentAdapterFactory; 018 019 public class ImplementationHidingComponentAdapterTestCase extends TestCase { 020 021 public void testMultipleInterfacesCanBeHidden() { 022 ComponentAdapter ca = new ConstructorInjectionComponentAdapter(new Class[]{ActionListener.class, MouseListener.class}, Footle.class); 023 ImplementationHidingComponentAdapter ihca = new ImplementationHidingComponentAdapter(ca, true); 024 Object comp = ihca.getComponentInstance(null); 025 assertNotNull(comp); 026 assertTrue(comp instanceof ActionListener); 027 assertTrue(comp instanceof MouseListener); 028 } 029 030 public void testNonInterfaceInArrayCantBeHidden() { 031 ComponentAdapter ca = new ConstructorInjectionComponentAdapter(new Class[]{String.class}, Footle.class); 032 ImplementationHidingComponentAdapter ihca = new ImplementationHidingComponentAdapter(ca, true); 033 try { 034 ihca.getComponentInstance(null); 035 fail("PicoIntrospectionException expected"); 036 } catch (PicoIntrospectionException e) { 037 // expected 038 } 039 } 040 041 public void testFactoryWithDefaultStrictMode(){ 042 ComponentAdapterFactory factory = new ImplementationHidingComponentAdapterFactory(new ConstructorInjectionComponentAdapterFactory()); 043 ComponentAdapter ihca = factory.createComponentAdapter("ww", Footle.class, new Parameter[0]); 044 try { 045 ihca.getComponentInstance(null); 046 fail("PicoIntrospectionException expected"); 047 } catch (PicoIntrospectionException e) { 048 // expected 049 } 050 } 051 052 public void testShouldThrowExceptionWhenAccessingNonInterfaceKeyedComponentInStrictMode() { 053 ComponentAdapter ca = new ConstructorInjectionComponentAdapter("ww", Footle.class); 054 ImplementationHidingComponentAdapter ihca = new ImplementationHidingComponentAdapter(ca, true); 055 try { 056 ihca.getComponentInstance(null); 057 fail("PicoIntrospectionException expected"); 058 } catch (PicoIntrospectionException e) { 059 // expected 060 } 061 } 062 063 public class Footle implements ActionListener, MouseListener { 064 public void actionPerformed(ActionEvent e) { 065 } 066 067 public void mouseClicked(MouseEvent e) { 068 } 069 070 public void mouseEntered(MouseEvent e) { 071 } 072 073 public void mouseExited(MouseEvent e) { 074 } 075 076 public void mousePressed(MouseEvent e) { 077 } 078 079 public void mouseReleased(MouseEvent e) { 080 } 081 082 } 083 084 }