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