📄 defaulttransportservicedescriptor.java
字号:
/* * $Id: DefaultTransportServiceDescriptor.java 12606 2008-09-03 17:09:08Z tcarlson $ * -------------------------------------------------------------------------------------- * 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.transport.service;import org.mule.MuleSessionHandler;import org.mule.api.MuleException;import org.mule.api.config.MuleProperties;import org.mule.api.endpoint.EndpointURIBuilder;import org.mule.api.endpoint.InboundEndpoint;import org.mule.api.registry.AbstractServiceDescriptor;import org.mule.api.registry.Registry;import org.mule.api.service.Service;import org.mule.api.transaction.TransactionConfig;import org.mule.api.transaction.TransactionFactory;import org.mule.api.transformer.Transformer;import org.mule.api.transport.Connector;import org.mule.api.transport.MessageAdapter;import org.mule.api.transport.MessageDispatcherFactory;import org.mule.api.transport.MessageReceiver;import org.mule.api.transport.MessageRequesterFactory;import org.mule.api.transport.SessionHandler;import org.mule.config.i18n.CoreMessages;import org.mule.endpoint.UrlEndpointURIBuilder;import org.mule.transaction.XaTransactionFactory;import org.mule.transport.NullPayload;import org.mule.util.ClassUtils;import org.mule.util.CollectionUtils;import java.util.List;import java.util.Properties;/** @inheritDocs */public class DefaultTransportServiceDescriptor extends AbstractServiceDescriptor implements TransportServiceDescriptor{ private String connector; private String dispatcherFactory; private String requesterFactory; private String transactionFactory; private String messageAdapter; private String messageReceiver; private String transactedMessageReceiver; private String xaTransactedMessageReceiver; private String endpointBuilder; private String sessionHandler; private String defaultInboundTransformer; private String defaultOutboundTransformer; private String defaultResponseTransformer; private Transformer inboundTransformer; private Transformer outboundTransformer; private Transformer responseTransformer; // private EndpointBuilder endpointBuilderImpl; private Properties exceptionMappings = new Properties(); private ClassLoader classLoader; public DefaultTransportServiceDescriptor(String service, Properties props, Registry registry, ClassLoader classLoader) { super(service); connector = removeProperty(MuleProperties.CONNECTOR_CLASS, props); dispatcherFactory = removeProperty(MuleProperties.CONNECTOR_DISPATCHER_FACTORY, props); requesterFactory = removeProperty(MuleProperties.CONNECTOR_REQUESTER_FACTORY, props); transactionFactory = removeProperty(MuleProperties.CONNECTOR_DISPATCHER_FACTORY, props); messageReceiver = removeProperty(MuleProperties.CONNECTOR_MESSAGE_RECEIVER_CLASS, props); transactedMessageReceiver = removeProperty(MuleProperties.CONNECTOR_TRANSACTED_MESSAGE_RECEIVER_CLASS, props); xaTransactedMessageReceiver = removeProperty(MuleProperties.CONNECTOR_XA_TRANSACTED_MESSAGE_RECEIVER_CLASS, props); messageAdapter = removeProperty(MuleProperties.CONNECTOR_MESSAGE_ADAPTER, props); defaultInboundTransformer = removeProperty(MuleProperties.CONNECTOR_INBOUND_TRANSFORMER, props); defaultOutboundTransformer = removeProperty(MuleProperties.CONNECTOR_OUTBOUND_TRANSFORMER, props); defaultResponseTransformer = removeProperty(MuleProperties.CONNECTOR_RESPONSE_TRANSFORMER, props); endpointBuilder = removeProperty(MuleProperties.CONNECTOR_ENDPOINT_BUILDER, props); sessionHandler = removeProperty(MuleProperties.CONNECTOR_SESSION_HANDLER, props);// try// {// registerDefaultTransformers(registry);// }// catch (Exception e)// {// e.printStackTrace();// } this.classLoader = classLoader; } public void setOverrides(Properties props) { if (props == null || props.size() == 0) { return; } connector = props.getProperty(MuleProperties.CONNECTOR_CLASS, connector); dispatcherFactory = props.getProperty(MuleProperties.CONNECTOR_DISPATCHER_FACTORY, dispatcherFactory); requesterFactory = props.getProperty(MuleProperties.CONNECTOR_REQUESTER_FACTORY, requesterFactory); messageReceiver = props.getProperty(MuleProperties.CONNECTOR_MESSAGE_RECEIVER_CLASS, messageReceiver); transactedMessageReceiver = props.getProperty( MuleProperties.CONNECTOR_TRANSACTED_MESSAGE_RECEIVER_CLASS, transactedMessageReceiver); xaTransactedMessageReceiver = props.getProperty( MuleProperties.CONNECTOR_XA_TRANSACTED_MESSAGE_RECEIVER_CLASS, xaTransactedMessageReceiver); messageAdapter = props.getProperty(MuleProperties.CONNECTOR_MESSAGE_ADAPTER, messageAdapter); String temp = props.getProperty(MuleProperties.CONNECTOR_INBOUND_TRANSFORMER); if (temp != null) { defaultInboundTransformer = temp; inboundTransformer = null; } temp = props.getProperty(MuleProperties.CONNECTOR_OUTBOUND_TRANSFORMER); if (temp != null) { defaultOutboundTransformer = temp; outboundTransformer = null; } temp = props.getProperty(MuleProperties.CONNECTOR_RESPONSE_TRANSFORMER); if (temp != null) { defaultResponseTransformer = temp; responseTransformer = null; } temp = props.getProperty(MuleProperties.CONNECTOR_ENDPOINT_BUILDER); if (temp != null) { endpointBuilder = temp; } } /* (non-Javadoc) * @see org.mule.transport.service.TransportServiceDescriptor#createMessageAdapter(java.lang.Object) */ public MessageAdapter createMessageAdapter(Object message) throws TransportServiceException { return createMessageAdapter(message, messageAdapter); } protected MessageAdapter createMessageAdapter(Object message, String clazz) throws TransportServiceException { if (message == null) { message = NullPayload.getInstance(); } if (messageAdapter != null) { try { return (MessageAdapter) ClassUtils.instanciateClass(clazz, new Object[]{message}, classLoader); } catch (Exception e) { throw new TransportServiceException(CoreMessages.failedToCreateObjectWith("Message Adapter", clazz), e); } } else { throw new TransportServiceException(CoreMessages.objectNotSetInService("Message Adapter", getService())); } } /* (non-Javadoc) * @see org.mule.transport.service.TransportServiceDescriptor#createSessionHandler() */ public SessionHandler createSessionHandler() throws TransportServiceException { if (sessionHandler == null) { sessionHandler = MuleSessionHandler.class.getName(); if (logger.isDebugEnabled()) { logger.debug("No session.handler set in service description, defaulting to: " + sessionHandler); } } try { return (SessionHandler) ClassUtils.instanciateClass(sessionHandler, ClassUtils.NO_ARGS, classLoader); } catch (Throwable e) { throw new TransportServiceException(CoreMessages.failedToCreateObjectWith("SessionHandler", sessionHandler), e); } } /* (non-Javadoc) * @see org.mule.transport.service.TransportServiceDescriptor#createMessageReceiver(org.mule.api.transport.Connector, org.mule.api.Component, org.mule.api.endpoint.Endpoint) */ public MessageReceiver createMessageReceiver(Connector connector, Service service, InboundEndpoint endpoint) throws MuleException { MessageReceiver mr = createMessageReceiver(connector, service, endpoint, null); mr.initialise(); return mr; } /* (non-Javadoc) * @see org.mule.transport.service.TransportServiceDescriptor#createMessageReceiver(org.mule.api.transport.Connector, org.mule.api.Component, org.mule.api.endpoint.Endpoint, java.lang.Object[]) */ public MessageReceiver createMessageReceiver(Connector connector, Service service, InboundEndpoint endpoint, Object[] args) throws MuleException { String receiverClass = messageReceiver; if (endpoint.getTransactionConfig() != null && endpoint.getTransactionConfig().getAction() != TransactionConfig.ACTION_NONE) { boolean xaTx = endpoint.getTransactionConfig().getFactory() instanceof XaTransactionFactory; if (transactedMessageReceiver != null && !xaTx) { receiverClass = transactedMessageReceiver; } else if (xaTransactedMessageReceiver != null && xaTx) { receiverClass = xaTransactedMessageReceiver; } } if (receiverClass != null) { Object[] newArgs; if (args != null && args.length != 0) { newArgs = new Object[3 + args.length]; } else { newArgs = new Object[3]; } newArgs[0] = connector; newArgs[1] = service; newArgs[2] = endpoint; if (args != null && args.length != 0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -