001package 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 022import static org.junit.Assert.assertEquals; 023import static org.junit.Assert.assertNotNull; 024import static org.junit.Assert.fail; 025 026import java.util.Locale; 027 028import org.apache.fulcrum.cache.GlobalCacheService; 029import org.apache.fulcrum.crypto.CryptoService; 030import org.apache.fulcrum.factory.FactoryService; 031import org.apache.fulcrum.intake.IntakeService; 032import org.apache.fulcrum.localization.LocalizationService; 033import org.apache.fulcrum.mimetype.MimeTypeService; 034import org.apache.turbine.services.avaloncomponent.AvalonComponentService; 035import org.apache.turbine.test.BaseTestCase; 036import org.apache.turbine.util.TurbineConfig; 037import org.junit.AfterClass; 038import org.junit.BeforeClass; 039import org.junit.Test; 040 041/** 042 * Unit test for verifing that we can load all the appropriate components from the 043 * appropriate Container. For now that is just ECM (AvalonComponentService) 044 * but in the future with mixed containers there could be multiple. 045 * 046 * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a> 047 * @author <a href="mailto:sgoeschl@apache.org">Siegfried Goeschl</a> 048 * @version $Id: LoadingComponentsTest.java 1606111 2014-06-27 14:46:47Z gk $ 049 */ 050public class LoadingComponentsTest extends BaseTestCase 051{ 052 private static TurbineConfig tc = null; 053 054 055 /** 056 * Test to load a couple of Avalon services directly by the 057 * AvalonComponentService. 058 * 059 * @throws Exception loading failed 060 */ 061 @Test public void testLoadingByAvalonComponentService() throws Exception 062 { 063 AvalonComponentService avalonComponentService = 064 (AvalonComponentService) TurbineServices.getInstance().getService( 065 AvalonComponentService.SERVICE_NAME); 066 067 assertNotNull(avalonComponentService); 068 069 GlobalCacheService dgcs = (GlobalCacheService)avalonComponentService.lookup(GlobalCacheService.ROLE); 070 assertNotNull(dgcs); 071 CryptoService cs = (CryptoService)avalonComponentService.lookup(CryptoService.ROLE); 072 assertNotNull(cs); 073 LocalizationService ls = (LocalizationService)avalonComponentService.lookup(LocalizationService.ROLE); 074 assertNotNull(ls); 075 IntakeService intake = (IntakeService)avalonComponentService.lookup(IntakeService.ROLE); 076 assertNotNull(intake); 077 FactoryService fs = (FactoryService)avalonComponentService.lookup(FactoryService.ROLE); 078 assertNotNull(fs); 079 MimeTypeService mimetype = (MimeTypeService)avalonComponentService.lookup(MimeTypeService.ROLE); 080 assertNotNull(mimetype); 081 //avalonComponentService.shutdown(); 082 } 083 084 /** 085 * Test to load a couple of Avalon services by using the 086 * TurbineServices which delegate the service retrieval to 087 * the AvalonComponentService 088 * 089 * @throws Exception loading failed 090 */ 091 @Test public void testLoadingByTurbineServices() throws Exception 092 { 093 ServiceManager serviceManager = TurbineServices.getInstance(); 094 095 GlobalCacheService gcs = (GlobalCacheService)serviceManager.getService(GlobalCacheService.ROLE); 096 assertNotNull(gcs); 097 CryptoService cs = (CryptoService)serviceManager.getService(CryptoService.ROLE); 098 assertNotNull(cs); 099 LocalizationService ls = (LocalizationService)serviceManager.getService(LocalizationService.ROLE); 100 assertNotNull(ls); 101 IntakeService intake = (IntakeService)serviceManager.getService(IntakeService.ROLE); 102 assertNotNull(intake); 103 FactoryService fs = (FactoryService)serviceManager.getService(FactoryService.ROLE); 104 assertNotNull(fs); 105 MimeTypeService mimetype = (MimeTypeService)serviceManager.getService(MimeTypeService.ROLE); 106 assertNotNull(mimetype); 107 } 108 109 /** 110 * Lookup up an unknown servie 111 * @throws Exception 112 */ 113 @Test public void testLookupUnknownService() throws Exception 114 { 115 ServiceManager serviceManager = TurbineServices.getInstance(); 116 117 try 118 { 119 serviceManager.getService("foo"); 120 fail("We expect an InstantiationException"); 121 } 122 catch (InstantiationException e) 123 { 124 // that'w what we expect 125 return; 126 } 127 catch (Throwable t) 128 { 129 fail("We expect an InstantiationException"); 130 } 131 } 132 133 /** 134 * Shutdown the AvalonComponentService where the MimeTypeService 135 * resides and lookup the MimeTypeService. This should trigger 136 * a late initialization of AvalonComponentService and returns 137 * a fully functional MimeTypeService. 138 */ 139 @Test public void testAvalonComponentServiceShutdown() throws Exception 140 { 141 ServiceManager serviceManager = TurbineServices.getInstance(); 142 serviceManager.shutdownService(AvalonComponentService.SERVICE_NAME); 143 144 MimeTypeService mimeTypeService = (MimeTypeService) serviceManager.getService(MimeTypeService.class.getName()); 145 assertNotNull(mimeTypeService); 146 147 Locale locale = new Locale("en", "US"); 148 String s = mimeTypeService.getCharSet(locale); 149 assertEquals("ISO-8859-1", s); 150 } 151 152 @BeforeClass 153 public static void setUp() throws Exception 154 { 155 tc = new TurbineConfig(".", "/conf/test/TestFulcrumComponents.properties"); 156 tc.initialize(); 157 } 158 @AfterClass 159 public static void tearDown() throws Exception 160 { 161 if (tc != null) 162 { 163 tc.dispose(); 164 } 165 } 166 167}