/** * * Copyright 2005-2006 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.mortbay.jetty.xbean; import java.net.URL; import java.util.Collection; import java.util.Iterator; import java.util.List; import junit.framework.TestCase; import org.apache.xbean.spring.context.ResourceXmlApplicationContext; import org.mortbay.component.LifeCycle; import org.mortbay.jetty.Handler; import org.mortbay.jetty.Server; import org.mortbay.jetty.deployer.ContextDeployer; import org.mortbay.jetty.handler.ContextHandlerCollection; import org.mortbay.jetty.handler.HandlerCollection; import org.mortbay.jetty.webapp.WebAppContext; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.core.io.UrlResource; public class XBeanTest extends TestCase { protected AbstractApplicationContext context; protected URL url; protected Server server; public void setUp() throws Exception { url = getClass().getClassLoader().getResource("org/mortbay/jetty/xbean/xbean.xml"); assertNotNull("Could not find xbean.xml on the classpath!", url); context = new ResourceXmlApplicationContext(new UrlResource(url)); } public void testUsingXBeanXmlConfig() throws Exception { System.setProperty("DEBUG", "false"); String[] names = context.getBeanNamesForType(Server.class); assertEquals("Should have the name of a Jetty server", 1, names.length); server = (Server) context.getBean(names[0]); assertNotNull("Should have a Jetty Server", server); HandlerCollection hcollection = (HandlerCollection) server.getChildHandlerByClass(HandlerCollection.class); assertNotNull("Should have a HandlerCollection", hcollection); assertNotNull("HandlerCollection should contain handlers", hcollection.getHandlers()); Handler[] handlers = hcollection.getHandlers(); assertEquals("Should be 3 handlers", 3,handlers.length); assertTrue("First handler should be a ContextHandlerCollection", handlers[0] instanceof ContextHandlerCollection); Handler[] webapps = ((ContextHandlerCollection)handlers[0]).getChildHandlers(); assertNotNull("Should be at least one webapp", webapps); assertTrue("Should be an instance of WebAppContext", webapps[0] instanceof WebAppContext); } public void testHotDeployer() throws Exception { System.setProperty("DEBUG", "false"); String[] names = context.getBeanNamesForType(Server.class); assertEquals("Should have the name of a Jetty server", 1, names.length); server = (Server) context.getBean(names[0]); assertNotNull("Should have a Jetty Server", server); Collection deployers = ((JettyFactoryBean) server).getDeployers(); assertTrue( "Should be a deployer", !deployers.isEmpty()); ContextDeployer deployer = null; for (Iterator iter = deployers.iterator(); iter.hasNext();) { deployer = (ContextDeployer) iter.next(); } assertNotNull("Should be a ContextDeployer", deployer); // Cannot get the following to work properly because the MacOS X java.io.tmpdir // resolves to /private/tmp instead of /tmp // assertEquals("", deployer.getConfigurationDir(), System.getProperty("java.io.tmpdir") + "/deploy"); } protected void tearDown() throws Exception { if (context != null) { context.destroy(); } server.stop(); } }