001    /**
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package org.apache.activemq.broker.jmx;
018    
019    import org.apache.activemq.broker.region.DurableTopicSubscription;
020    import org.apache.activemq.broker.region.TopicSubscription;
021    
022    /**
023     *
024     *
025     */
026    public class TopicSubscriptionView extends SubscriptionView implements TopicSubscriptionViewMBean {
027    
028        public TopicSubscriptionView(String clientId, String userName, TopicSubscription subs) {
029            super(clientId, userName, subs);
030        }
031    
032        protected TopicSubscription getTopicSubscription() {
033            return (TopicSubscription)subscription;
034        }
035    
036        /**
037         * @return the number of messages discarded due to being a slow consumer
038         */
039        public int getDiscardedCount() {
040            TopicSubscription topicSubscription = getTopicSubscription();
041            return topicSubscription != null ? topicSubscription.discarded() : 0;
042        }
043    
044        /**
045         * @return the maximun number of messages that can be pending.
046         */
047        public int getMaximumPendingQueueSize() {
048            TopicSubscription topicSubscription = getTopicSubscription();
049            return topicSubscription != null ? topicSubscription.getMaximumPendingMessages() : 0;
050        }
051    
052        /**
053         *
054         */
055        public void setMaximumPendingQueueSize(int max) {
056            TopicSubscription topicSubscription = getTopicSubscription();
057            if (topicSubscription != null) {
058                topicSubscription.setMaximumPendingMessages(max);
059            }
060        }
061    
062        @Override
063        public boolean isActive() {
064            if (subscription instanceof DurableTopicSubscription) {
065                return ((DurableTopicSubscription)subscription).isActive();
066            } else {
067                return super.isActive();
068            }
069        }
070    
071    
072    
073    }