/*
* Copyright 2002-2016 the original author or authors.
*
* 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.springframework.integration.support.management;
import java.util.Collection;
import java.util.Map;
import java.util.Properties;
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.springframework.jmx.export.annotation.ManagedOperation;
import org.springframework.messaging.core.DestinationResolver;
/**
* Exposes channel mapping operations when the router is proxied.
* {@link #setChannelMappings(Map)} is also exposed. This cannot
* be used with a control-bus, but it can be used programmatically
* or over JMX.
*
* @author Gary Russell
* @since 2.1
*
*/
public interface MappingMessageRouterManagement {
/**
* Add a channel mapping from the provided key to channel name.
* @param key The key.
* @param channelName The channel name.
*/
@ManagedOperation
void setChannelMapping(String key, String channelName);
/**
* Remove a channel mapping for the given key if present.
* @param key The key.
*/
@ManagedOperation
void removeChannelMapping(String key);
/**
* Provide mappings from channel keys to channel names.
* @param channelMappings The channel mappings.
* @since 4.0
*/
@ManagedOperation
void replaceChannelMappings(Properties channelMappings);
/**
* @return an unmodifiable map of channel mappings.
* @since 4.0
*/
@ManagedAttribute
Map<String, String> getChannelMappings();
/**
* Provide mappings from channel keys to channel names.
* Channel names will be resolved by the {@link DestinationResolver}.
* @param channelMappings The channel mappings.
* @since 4.0
*/
@ManagedAttribute
void setChannelMappings(Map<String, String> channelMappings);
/**
* Provide a collection of channel names to which
* we have routed messages where the channel was not explicitly mapped.
* <p> Implementations may choose to return only the most recent channel names.
* @return a collection of channel names to which
* we have routed messages where the channel was not explicitly mapped.
* @since 4.3
*/
@ManagedAttribute
Collection<String> getDynamicChannelNames();
}