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 }