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 */ 017package org.apache.activemq.broker.jmx; 018 019import org.apache.activemq.command.ActiveMQDestination; 020import org.apache.activemq.command.ProducerInfo; 021 022public class ProducerView implements ProducerViewMBean { 023 024 protected final ProducerInfo info; 025 protected final String clientId; 026 protected final String userName; 027 protected final ManagedRegionBroker broker; 028 029 protected ActiveMQDestination lastUsedDestination; 030 031 public ProducerView(ProducerInfo info, String clientId, String userName, ManagedRegionBroker broker) { 032 this.info = info; 033 this.clientId = clientId; 034 this.userName = userName; 035 this.broker = broker; 036 } 037 038 @Override 039 public String getClientId() { 040 return this.clientId; 041 } 042 043 @Override 044 public String getConnectionId() { 045 if (info != null) { 046 return info.getProducerId().getConnectionId(); 047 } 048 return "NOTSET"; 049 } 050 051 @Override 052 public long getSessionId() { 053 if (info != null) { 054 return info.getProducerId().getSessionId(); 055 } 056 return 0; 057 } 058 059 @Override 060 public String getProducerId() { 061 if (info != null) { 062 return info.getProducerId().toString(); 063 } 064 return "NOTSET"; 065 } 066 067 @Override 068 public String getDestinationName() { 069 if (info != null && info.getDestination() != null) { 070 ActiveMQDestination dest = info.getDestination(); 071 return dest.getPhysicalName(); 072 } else if (this.lastUsedDestination != null) { 073 return this.lastUsedDestination.getPhysicalName(); 074 } 075 return "NOTSET"; 076 } 077 078 @Override 079 public boolean isDestinationQueue() { 080 if (info != null) { 081 if (info.getDestination() != null) { 082 ActiveMQDestination dest = info.getDestination(); 083 return dest.isQueue(); 084 } else if(lastUsedDestination != null) { 085 return lastUsedDestination.isQueue(); 086 } 087 } 088 return false; 089 } 090 091 @Override 092 public boolean isDestinationTopic() { 093 if (info != null) { 094 if (info.getDestination() != null) { 095 ActiveMQDestination dest = info.getDestination(); 096 return dest.isTopic(); 097 } else if(lastUsedDestination != null) { 098 return lastUsedDestination.isTopic(); 099 } 100 } 101 return false; 102 } 103 104 @Override 105 public boolean isDestinationTemporary() { 106 if (info != null) { 107 if (info.getDestination() != null) { 108 ActiveMQDestination dest = info.getDestination(); 109 return dest.isTemporary(); 110 } else if(lastUsedDestination != null) { 111 return lastUsedDestination.isTemporary(); 112 } 113 } 114 return false; 115 } 116 117 @Override 118 public int getProducerWindowSize() { 119 if (info != null) { 120 return info.getWindowSize(); 121 } 122 return 0; 123 } 124 125 @Override 126 public boolean isDispatchAsync() { 127 if (info != null) { 128 return info.isDispatchAsync(); 129 } 130 return false; 131 } 132 133 /** 134 * @return pretty print 135 */ 136 public String toString() { 137 return "ProducerView: " + getClientId() + ":" + getConnectionId(); 138 } 139 140 /** 141 * Set the last used Destination name for a Dynamic Destination Producer. 142 */ 143 void setLastUsedDestinationName(ActiveMQDestination destinationName) { 144 this.lastUsedDestination = destinationName; 145 } 146 147 @Override 148 public String getUserName() { 149 return userName; 150 } 151}