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 *****************************************************************************/
009 package org.picocontainer.injectors;
010
011 import org.junit.Test;
012 import org.picocontainer.ComponentAdapter;
013 import org.picocontainer.DefaultPicoContainer;
014 import org.picocontainer.MutablePicoContainer;
015 import org.picocontainer.Parameter;
016 import org.picocontainer.injectors.ConstructorInjector;
017 import org.picocontainer.monitors.NullComponentMonitor;
018
019 import static junit.framework.Assert.assertNotNull;
020 import static org.junit.Assert.fail;
021
022 public final class NonPublicConstructorsTestCase {
023
024 @Test
025 public void doFirstSampleWithNotPublicConstructor() {
026 MutablePicoContainer container = new DefaultPicoContainer();
027
028 ComponentAdapter<DummyNotPublicConstructor> dummyComponentAdapter =
029 new ConstructorInjector<DummyNotPublicConstructor>(
030 DummyNotPublicConstructor.class,
031 DummyNotPublicConstructor.class, null, new NullComponentMonitor(), false)
032 .withNonPublicConstructors();
033
034 container.addAdapter(dummyComponentAdapter);
035
036 DummyNotPublicConstructor dummy = container.getComponent(DummyNotPublicConstructor.class);
037 assertNotNull(dummy);
038 }
039
040 @Test
041 public void doSecondSampleWithNotPublicClass() {
042 MutablePicoContainer container = new DefaultPicoContainer();
043
044 ComponentAdapter<DummyNotPublicClass> dummyComponentAdapter =
045 new ConstructorInjector<DummyNotPublicClass>(
046 DummyNotPublicClass.class.getCanonicalName(),
047 DummyNotPublicClass.class, null, new NullComponentMonitor(), false)
048 .withNonPublicConstructors();
049
050 container.addAdapter(dummyComponentAdapter);
051
052 Object item = container.getComponent(DummyNotPublicClass.class);
053 assertNotNull(item);
054 }
055
056 @Test
057 public void doThirdSampleWithProtectedConstructor() {
058 MutablePicoContainer container = new DefaultPicoContainer();
059
060 ComponentAdapter<DummyProtectedConstructor> dummyComponentAdapter =
061 new ConstructorInjector<DummyProtectedConstructor>(
062 DummyProtectedConstructor.class,
063 DummyProtectedConstructor.class, null, new NullComponentMonitor(), false)
064 .withNonPublicConstructors();
065
066
067 container.addAdapter(dummyComponentAdapter);
068
069 DummyProtectedConstructor dummy = container.getComponent(DummyProtectedConstructor.class);
070 assertNotNull(dummy);
071
072 }
073
074 public static class DummyProtectedConstructor {
075 protected DummyProtectedConstructor() {
076 }
077 }
078
079 public static class DummyNotPublicConstructor {
080 DummyNotPublicConstructor() {
081 }
082 }
083
084 static class DummyNotPublicClass {
085 }
086
087 }