001 /***************************************************************************** 002 * Copyright (C) PicoContainer Organization. All rights reserved. * 003 * ------------------------------------------------------------------------- * 004 * The software in this package is published under the terms of the BSD * 005 * style license a copy of which has been included with this distribution in * 006 * the LICENSE.txt file. * 007 * * 008 * Original code by Michael Rettig * 009 *****************************************************************************/ 010 package org.picocontainer.defaults.issues; 011 012 import org.picocontainer.defaults.DefaultPicoContainer; 013 import org.picocontainer.defaults.VerifyingVisitor; 014 015 import junit.framework.TestCase; 016 017 018 public class Issue0229TestCase extends TestCase { 019 public static class MockRunnable implements Runnable { 020 public void run() { 021 } 022 } 023 024 public static class OtherRunnable implements Runnable { 025 public void run() { 026 } 027 } 028 029 public static class MockRunner { 030 private final Runnable[] _runners; 031 032 public MockRunner(Runnable[] runnables) { 033 _runners = runnables; 034 } 035 036 public Runnable[] getRunners(){ 037 return _runners; 038 } 039 } 040 041 public void testArrayDependenciesAndVerification() { 042 DefaultPicoContainer container = new DefaultPicoContainer(); 043 container.registerComponentImplementation(MockRunnable.class); 044 container.registerComponentImplementation(OtherRunnable.class); 045 container.registerComponentImplementation(MockRunner.class); 046 047 // this will fail to resolve the Runnable array on the MockRunner 048 VerifyingVisitor visitor = new VerifyingVisitor(); 049 visitor.traverse(container); 050 051 container.start(); 052 assertNotNull(container.getComponentInstanceOfType(MockRunner.class)); 053 } 054 055 }