defaultjmstopicresolver.java

来自「提供ESB 应用mule源代码 提供ESB 应用mule源代码」· Java 代码 · 共 124 行

JAVA
124
字号
/* * $Id: DefaultJmsTopicResolver.java 10489 2008-01-23 17:53:38Z 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.transport.jms;import org.mule.api.endpoint.ImmutableEndpoint;import org.mule.util.MapUtils;import org.mule.util.StringMessageUtils;import javax.jms.Destination;import javax.jms.Queue;import javax.jms.Topic;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;/** * A default implementation of the resolver uses endpoint's * resource info and Java's {@code instanceof} operator to * detect JMS topics. */public class DefaultJmsTopicResolver implements JmsTopicResolver{    /**     * logger used by this class     */    protected static final Log logger = LogFactory.getLog(DefaultJmsTopicResolver.class);    /**     * Connector back-reference.     */    private JmsConnector connector;    /**     * Create an instance of the resolver.     * @param connector owning connector     */    public DefaultJmsTopicResolver (final JmsConnector connector)    {        this.connector = connector;    }    /**     * Getter for property 'connector'.     *     * @return Value for property 'connector'.     */    public JmsConnector getConnector ()    {        return connector;    }    /**     * Will use endpoint's resource info to detect a topic,     * as in {@code jms://topic:trade.PriceUpdatesTopic}. This     * method will call {@link #isTopic(org.mule.api.endpoint.ImmutableEndpoint, boolean)}     * with fallback flag set to <strong>true</false>.     * <p/>     * <strong>NOTE:</strong> When using topics, use the '.' (dot) symbol for subcontext separation,     * as opposed to '/'. Otherwise the resource info may not get properly translated for the     * topic endpoint due to the way URI's are parsed.      * @param endpoint endpoint to test     * @return true if the endpoint has a topic configuration     * @see #isTopic(org.mule.api.endpoint.ImmutableEndpoint, boolean)      */    public boolean isTopic (ImmutableEndpoint endpoint)    {        return isTopic(endpoint, true);    }    /** {@inheritDoc} */    public boolean isTopic (ImmutableEndpoint endpoint, boolean fallbackToEndpointProperties)    {        final String resourceInfo = endpoint.getEndpointURI().getResourceInfo();        boolean topic = JmsConstants.TOPIC_PROPERTY.equalsIgnoreCase(resourceInfo);        if (!topic && fallbackToEndpointProperties)        {            topic = MapUtils.getBooleanValue(endpoint.getProperties(), JmsConstants.TOPIC_PROPERTY, false);        }        return topic;    }    /**     * Will use an {@code instanceof} operator. Keep in mind     * that may fail for JMS systems implementing both a     * {@code javax.jms.Topic} and {@code javax.jms.Queue} in     * a single destination class implementation.     * @param destination a jms destination to test     * @return {@code true} if the destination is a topic     */    public boolean isTopic (Destination destination)    {        checkInvariants(destination);        return destination instanceof Topic;    }    /**     * Perform some sanity checks, will complain in the log.     * @param destination destination to test     */    protected void checkInvariants (final Destination destination)    {        if (destination instanceof Topic && destination instanceof Queue            && connector.getJmsSupport() instanceof Jms102bSupport)        {            logger.error(StringMessageUtils.getBoilerPlate(                    "Destination implements both Queue and Topic "                    + "while complying with JMS 1.0.2b specification. "                    + "Please report your application server or JMS vendor name and version "                    + "to dev<_at_>mule.codehaus.org or http://www.mulesource.org/jira"));        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?