testcomponentdefinitionparser.java
来自「提供ESB 应用mule源代码 提供ESB 应用mule源代码」· Java 代码 · 共 133 行
JAVA
133 行
/* * $Id: TestComponentDefinitionParser.java 12151 2008-06-24 23:36:43Z dfeist $ * -------------------------------------------------------------------------------------- * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com * * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */package org.mule.tck.config;import org.mule.api.lifecycle.Disposable;import org.mule.api.lifecycle.Initialisable;import org.mule.component.DefaultJavaComponent;import org.mule.config.spring.parsers.specific.ComponentDefinitionParser;import org.mule.object.AbstractObjectFactory;import org.mule.object.SingletonObjectFactory;import org.mule.tck.functional.EventCallback;import org.mule.tck.functional.FunctionalTestComponent;import org.mule.util.ClassUtils;import org.mule.util.IOUtils;import org.mule.util.StringUtils;import java.io.IOException;import java.util.HashMap;import java.util.Map;import org.springframework.beans.factory.BeanCreationException;import org.springframework.beans.factory.support.AbstractBeanDefinition;import org.springframework.beans.factory.support.BeanDefinitionBuilder;import org.springframework.beans.factory.support.GenericBeanDefinition;import org.springframework.beans.factory.xml.ParserContext;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;/** * Configures a FunctionalTestComponent wrapped as a JavaComponent. Theis parser provides a short form way of * configuring a test component in Mule. */public class TestComponentDefinitionParser extends ComponentDefinitionParser{ private static Class OBJECT_FACTORY_TYPE = SingletonObjectFactory.class; private Class componentInstanceClass = FunctionalTestComponent.class; public TestComponentDefinitionParser() { super(DefaultJavaComponent.class); addIgnored("appendString"); addIgnored("enableMessageHistory"); addIgnored("enableNotifications"); addIgnored("throwException"); addIgnored("exceptionToThrow"); addIgnored("waitTime"); addIgnored("doInboundTransform"); } protected void parseChild(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { Element parent = (Element) element.getParentNode(); String serviceName = parent.getAttribute(ATTRIBUTE_NAME); builder.addPropertyReference("service", serviceName); // Create a BeanDefinition for the nested object factory and set it a // property value for the component AbstractBeanDefinition objectFactoryBeanDefinition = new GenericBeanDefinition(); objectFactoryBeanDefinition.setBeanClass(OBJECT_FACTORY_TYPE); objectFactoryBeanDefinition.getPropertyValues().addPropertyValue(AbstractObjectFactory.ATTRIBUTE_OBJECT_CLASS, componentInstanceClass); objectFactoryBeanDefinition.setInitMethodName(Initialisable.PHASE_NAME); objectFactoryBeanDefinition.setDestroyMethodName(Disposable.PHASE_NAME); Map props = new HashMap(); for (int i = 0; i < element.getAttributes().getLength(); i++) { Node n = element.getAttributes().item(i); props.put(n.getLocalName(), n.getNodeValue()); } String returnData = null; NodeList list = element.getChildNodes(); for (int i = 0; i < list.getLength(); i++) { if ("return-data".equals(list.item(i).getLocalName())) { Element rData = (Element) list.item(i); if (StringUtils.isNotEmpty(rData.getAttribute("file"))) { String file = rData.getAttribute("file"); try { returnData = IOUtils.getResourceAsString(file, getClass()); } catch (IOException e) { throw new BeanCreationException("Failed to load test-data resource: " + file, e); } } else { returnData = rData.getTextContent(); } } else if ("callback".equals(list.item(i).getLocalName())) { Element ele = (Element) list.item(i); String c = ele.getAttribute("class"); try { EventCallback cb = (EventCallback)ClassUtils.instanciateClass(c, ClassUtils.NO_ARGS); props.put("eventCallback", cb); } catch (Exception e) { throw new BeanCreationException("Failed to load event-callback: " + c, e); } } } if (returnData != null) { props.put("returnData", returnData); } objectFactoryBeanDefinition.getPropertyValues().addPropertyValue("properties", props); builder.addPropertyValue("objectFactory", objectFactoryBeanDefinition); super.parseChild(element, parserContext, builder); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?