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    package org.picocontainer.lifecycle;
009    
010    import static org.junit.Assert.assertEquals;
011    
012    import javax.annotation.PostConstruct;
013    import javax.annotation.PreDestroy;
014    
015    import org.junit.Before;
016    import org.junit.Test;
017    import org.picocontainer.DefaultPicoContainer;
018    import org.picocontainer.LifecycleStrategy;
019    import org.picocontainer.MutablePicoContainer;
020    import org.picocontainer.behaviors.Caching;
021    import org.picocontainer.containers.EmptyPicoContainer;
022    import org.picocontainer.monitors.NullComponentMonitor;
023    
024    /**
025     *
026     * @author Mauro Talevi
027     */
028    public class JavaEE5LifecycleStrategyTestCase {
029    
030        MutablePicoContainer pico;
031    
032        public static class ProPostAnnotationJava5Startable {
033    
034            StringBuilder sb;
035    
036            public ProPostAnnotationJava5Startable(StringBuilder sb) {
037                this.sb = sb;
038            }
039    
040            @PostConstruct
041            public void post() {
042                sb.append("post()");
043            }
044    
045            @PreDestroy
046            public void pre() {
047                sb.append("pre()");
048            }
049    
050        }
051    
052    
053        private LifecycleStrategy strategy;
054    
055        @Before
056        public void setUp(){
057            strategy = new JavaEE5LifecycleStrategy(new NullComponentMonitor());
058            pico = new DefaultPicoContainer(new Caching(), strategy, new EmptyPicoContainer());
059            pico.addComponent(StringBuilder.class);
060            pico.addComponent(ProPostAnnotationJava5Startable.class);
061        }
062    
063        @Test public void testStartable(){
064            pico.start();
065            assertEquals("post()", pico.getComponent(StringBuilder.class).toString());
066        }
067    
068        @Test public void testStopHasNoMeaning(){
069            pico.start();
070            pico.stop();
071            assertEquals("post()", pico.getComponent(StringBuilder.class).toString());
072        }
073    
074        @Test public void testDispose(){
075            pico.start();
076            pico.dispose();
077            assertEquals("post()pre()", pico.getComponent(StringBuilder.class).toString());
078        }
079    
080        @Test public void testSerializable(){
081        }
082    
083    }