    001    package org.apache.turbine.services;
    002
    003    /*
    004     * Licensed to the Apache Software Foundation (ASF) under one
    005     * or more contributor license agreements.  See the NOTICE file
    006     * distributed with this work for additional information
    007     * regarding copyright ownership.  The ASF licenses this file
    008     * to you under the Apache License, Version 2.0 (the
    009     * "License"); you may not use this file except in compliance
    010     * with the License.  You may obtain a copy of the License at
    011     *
    012     *   http://www.apache.org/licenses/LICENSE-2.0
    013     *
    014     * Unless required by applicable law or agreed to in writing,
    015     * software distributed under the License is distributed on an
    016     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    017     * KIND, either express or implied.  See the License for the
    018     * specific language governing permissions and limitations
    019     * under the License.
    020     */
    021
    022    import java.util.Locale;
    023
    024    import org.apache.fulcrum.cache.GlobalCacheService;
    025    import org.apache.fulcrum.crypto.CryptoService;
    026    import org.apache.fulcrum.factory.FactoryService;
    027    import org.apache.fulcrum.intake.IntakeService;
    028    import org.apache.fulcrum.localization.LocalizationService;
    029    import org.apache.fulcrum.mimetype.MimeTypeService;
    030    import org.apache.turbine.services.avaloncomponent.AvalonComponentService;
    031    import org.apache.turbine.test.BaseTestCase;
    032    import org.apache.turbine.util.TurbineConfig;
    033
    034    /**
    035     * Unit test for verifing that we can load all the appropriate components from the
    036     * appropriate Container.  For now that is just ECM (AvalonComponentService)
    037     * but in the future with mixed containers there could be multiple.
    038     *
    039     * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
    040     * @author <a href="mailto:sgoeschl@apache.org">Siegfried Goeschl</a>
    041     * @version $Id: LoadingComponentsTest.java 947330 2010-05-22 19:38:55Z tv $
    042     */
    043    public class LoadingComponentsTest extends BaseTestCase
    044    {
    045        private static TurbineConfig tc = null;
    046        public LoadingComponentsTest(String name) throws Exception
    047        {
    048            super(name);
    049        }
    050
    051        /**
    052         * Test to load a couple of Avalon services directly by the
    053         * AvalonComponentService.
    054         *
    055         * @throws Exception loading failed
    056         */
    057        public void testLoadingByAvalonComponentService() throws Exception
    058        {
    059            AvalonComponentService avalonComponentService =
    060                (AvalonComponentService) TurbineServices.getInstance().getService(
    061                        AvalonComponentService.SERVICE_NAME);
    062
    063            assertNotNull(avalonComponentService);
    064
    065            GlobalCacheService dgcs = (GlobalCacheService)avalonComponentService.lookup(GlobalCacheService.ROLE);
    066            assertNotNull(dgcs);
    067            CryptoService cs = (CryptoService)avalonComponentService.lookup(CryptoService.ROLE);
    068            assertNotNull(cs);
    069            LocalizationService ls = (LocalizationService)avalonComponentService.lookup(LocalizationService.ROLE);
    070            assertNotNull(ls);
    071            IntakeService intake = (IntakeService)avalonComponentService.lookup(IntakeService.ROLE);
    072            assertNotNull(intake);
    073            FactoryService fs = (FactoryService)avalonComponentService.lookup(FactoryService.ROLE);
    074            assertNotNull(fs);
    075            MimeTypeService mimetype = (MimeTypeService)avalonComponentService.lookup(MimeTypeService.ROLE);
    076            assertNotNull(mimetype);
    077        }
    078
    079        /**
    080         * Test to load a couple of Avalon services by using the
    081         * TurbineServices which delegate the service retrieval to
    082         * the AvalonComponentService
    083         *
    084         * @throws Exception loading failed
    085         */
    086        public void testLoadingByTurbineServices() throws Exception
    087        {
    088            ServiceManager serviceManager = TurbineServices.getInstance();
    089
    090            GlobalCacheService gcs = (GlobalCacheService)serviceManager.getService(GlobalCacheService.ROLE);
    091            assertNotNull(gcs);
    092            CryptoService cs = (CryptoService)serviceManager.getService(CryptoService.ROLE);
    093            assertNotNull(cs);
    094            LocalizationService ls = (LocalizationService)serviceManager.getService(LocalizationService.ROLE);
    095            assertNotNull(ls);
    096            IntakeService intake = (IntakeService)serviceManager.getService(IntakeService.ROLE);
    097            assertNotNull(intake);
    098            FactoryService fs = (FactoryService)serviceManager.getService(FactoryService.ROLE);
    099            assertNotNull(fs);
    100            MimeTypeService mimetype = (MimeTypeService)serviceManager.getService(MimeTypeService.ROLE);
    101            assertNotNull(mimetype);
    102        }
    103
    104        /**
    105         * Lookup up an unknown servie
    106         * @throws Exception
    107         */
    108        public void testLookupUnknownService() throws Exception
    109        {
    110            ServiceManager serviceManager = TurbineServices.getInstance();
    111
    112            try
    113            {
    114                serviceManager.getService("foo");
    115                fail("We expect an InstantiationException");
    116            }
    117            catch (InstantiationException e)
    118            {
    119                // that'w what we expect
    120                return;
    121            }
    122            catch (Throwable t)
    123            {
    124                fail("We expect an InstantiationException");
    125            }
    126        }
    127
    128        /**
    129         * Shutdown the AvalonComponentService where the MimeTypeService
    130         * resides and lookup the MimeTypeService. This should trigger
    131         * a late initialization of AvalonComponentService and returns
    132         * a fully functional MimeTypeService.
    133         */
    134        public void testAvalonComponentServiceShutdown() throws Exception
    135        {
    136            ServiceManager serviceManager = TurbineServices.getInstance();
    137            serviceManager.shutdownService(AvalonComponentService.SERVICE_NAME);
    138
    139            MimeTypeService mimeTypeService = (MimeTypeService) serviceManager.getService(MimeTypeService.class.getName());
    140            assertNotNull(mimeTypeService);
    141
    142            Locale locale = new Locale("en", "US");
    143            String s = mimeTypeService.getCharSet(locale);
    144            assertEquals("ISO-8859-1", s);
    145        }
    146
    147        public void setUp() throws Exception
    148        {
    149            tc = new TurbineConfig(".", "/conf/test/TestFulcrumComponents.properties");
    150            tc.initialize();
    151        }
    152        public void tearDown() throws Exception
    153        {
    154            if (tc != null)
    155            {
    156                tc.dispose();
    157            }
    158        }
    159    }