/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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.apache.camel.spring; import java.io.InputStreamReader; import java.io.Reader; import java.io.StringReader; import java.io.StringWriter; import java.util.LinkedList; import java.util.List; import javax.xml.bind.JAXBContext; import junit.framework.TestCase; import org.apache.camel.impl.ActiveMQUuidGenerator; import org.apache.camel.impl.DefaultModelJAXBContextFactory; import org.apache.camel.impl.SimpleUuidGenerator; import org.apache.camel.spi.ModelJAXBContextFactory; import org.apache.camel.spi.UuidGenerator; import org.apache.camel.util.IOHelper; import org.custommonkey.xmlunit.XMLAssert; import org.custommonkey.xmlunit.XMLUnit; import org.springframework.context.support.StaticApplicationContext; /** * @version */ public class CamelContextFactoryBeanTest extends TestCase { private CamelContextFactoryBean factory; protected void setUp() throws Exception { super.setUp(); factory = new CamelContextFactoryBean(); factory.setId("camelContext"); } public void testGetDefaultUuidGenerator() throws Exception { factory.setApplicationContext(new StaticApplicationContext()); factory.afterPropertiesSet(); UuidGenerator uuidGenerator = factory.getContext().getUuidGenerator(); assertTrue(uuidGenerator instanceof ActiveMQUuidGenerator); } public void testGetCustomUuidGenerator() throws Exception { StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.registerSingleton("uuidGenerator", SimpleUuidGenerator.class); factory.setApplicationContext(applicationContext); factory.afterPropertiesSet(); UuidGenerator uuidGenerator = factory.getContext().getUuidGenerator(); assertTrue(uuidGenerator instanceof SimpleUuidGenerator); } public void testSetEndpoints() throws Exception { // Create a new Camel context and add an endpoint CamelContextFactoryBean camelContext = new CamelContextFactoryBean(); List<CamelEndpointFactoryBean> endpoints = new LinkedList<CamelEndpointFactoryBean>(); CamelEndpointFactoryBean endpoint = new CamelEndpointFactoryBean(); endpoint.setId("endpoint1"); endpoint.setUri("mock:end"); endpoints.add(endpoint); camelContext.setEndpoints(endpoints); // Compare the new context with our reference context Reader expectedContext = null; try { expectedContext = new InputStreamReader(getClass().getResourceAsStream("/org/apache/camel/spring/context-with-endpoint.xml")); String createdContext = contextAsString(camelContext); XMLUnit.setIgnoreWhitespace(true); XMLAssert.assertXMLEqual(expectedContext, new StringReader(createdContext)); } finally { IOHelper.close(expectedContext); } } private String contextAsString(CamelContextFactoryBean context) throws Exception { StringWriter stringOut = new StringWriter(); JAXBContext jaxb = JAXBContext.newInstance(CamelContextFactoryBean.class); jaxb.createMarshaller().marshal(context, stringOut); return stringOut.toString(); } public void testCustomModelJAXBContextFactory() throws Exception { StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.registerSingleton("customModelJAXBContextFactory", CustomModelJAXBContextFactory.class); factory.setApplicationContext(applicationContext); factory.afterPropertiesSet(); ModelJAXBContextFactory modelJAXBContextFactory = factory.getContext().getModelJAXBContextFactory(); assertTrue(modelJAXBContextFactory instanceof CustomModelJAXBContextFactory); } private static class CustomModelJAXBContextFactory extends DefaultModelJAXBContextFactory { // Do nothing here } }