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.command;
018
019import org.apache.activemq.state.CommandVisitor;
020
021/**
022 *
023 * @openwire:marshaller code="3"
024 *
025 */
026public class ConnectionInfo extends BaseCommand {
027
028    public static final byte DATA_STRUCTURE_TYPE = CommandTypes.CONNECTION_INFO;
029
030    protected ConnectionId connectionId;
031    protected String clientId;
032    protected String clientIp;
033    protected String userName;
034    protected String password;
035    protected BrokerId[] brokerPath;
036    protected boolean brokerMasterConnector;
037    protected boolean manageable;
038    protected boolean clientMaster = true;
039    protected boolean faultTolerant = false;
040    protected boolean failoverReconnect;
041    protected transient Object transportContext;
042
043    public ConnectionInfo() {
044    }
045
046    public ConnectionInfo(ConnectionId connectionId) {
047        this.connectionId = connectionId;
048    }
049
050    public byte getDataStructureType() {
051        return DATA_STRUCTURE_TYPE;
052    }
053
054    public ConnectionInfo copy() {
055        ConnectionInfo copy = new ConnectionInfo();
056        copy(copy);
057        return copy;
058    }
059
060    private void copy(ConnectionInfo copy) {
061        super.copy(copy);
062        copy.connectionId = connectionId;
063        copy.clientId = clientId;
064        copy.userName = userName;
065        copy.password = password;
066        copy.brokerPath = brokerPath;
067        copy.brokerMasterConnector = brokerMasterConnector;
068        copy.manageable = manageable;
069        copy.clientMaster = clientMaster;
070        copy.transportContext = transportContext;
071        copy.faultTolerant= faultTolerant;
072        copy.clientIp = clientIp;
073    }
074
075    /**
076     * @openwire:property version=1 cache=true
077     */
078    public ConnectionId getConnectionId() {
079        return connectionId;
080    }
081
082    public void setConnectionId(ConnectionId connectionId) {
083        this.connectionId = connectionId;
084    }
085
086    /**
087     * @openwire:property version=1
088     */
089    public String getClientId() {
090        return clientId;
091    }
092
093    public void setClientId(String clientId) {
094        this.clientId = clientId;
095    }
096
097    public RemoveInfo createRemoveCommand() {
098        RemoveInfo command = new RemoveInfo(getConnectionId());
099        command.setResponseRequired(isResponseRequired());
100        return command;
101    }
102
103    /**
104     * @openwire:property version=1
105     */
106    public String getPassword() {
107        return password;
108    }
109
110    public void setPassword(String password) {
111        this.password = password;
112    }
113
114    /**
115     * @openwire:property version=1
116     */
117    public String getUserName() {
118        return userName;
119    }
120
121    public void setUserName(String userName) {
122        this.userName = userName;
123    }
124
125    /**
126     * The route of brokers the command has moved through.
127     *
128     * @openwire:property version=1 cache=true
129     */
130    public BrokerId[] getBrokerPath() {
131        return brokerPath;
132    }
133
134    public void setBrokerPath(BrokerId[] brokerPath) {
135        this.brokerPath = brokerPath;
136    }
137
138    public Response visit(CommandVisitor visitor) throws Exception {
139        return visitor.processAddConnection(this);
140    }
141
142    /**
143     * @openwire:property version=1
144     */
145    public boolean isBrokerMasterConnector() {
146        return brokerMasterConnector;
147    }
148
149    /**
150     * @param slaveBroker The brokerMasterConnector to set.
151     */
152    public void setBrokerMasterConnector(boolean slaveBroker) {
153        this.brokerMasterConnector = slaveBroker;
154    }
155
156    /**
157     * @openwire:property version=1
158     */
159    public boolean isManageable() {
160        return manageable;
161    }
162
163    /**
164     * @param manageable The manageable to set.
165     */
166    public void setManageable(boolean manageable) {
167        this.manageable = manageable;
168    }
169
170    /**
171     * Transports may wish to associate additional data with the connection. For
172     * example, an SSL transport may use this field to attach the client
173     * certificates used when the connection was established.
174     *
175     * @return the transport context.
176     */
177    public Object getTransportContext() {
178        return transportContext;
179    }
180
181    /**
182     * Transports may wish to associate additional data with the connection. For
183     * example, an SSL transport may use this field to attach the client
184     * certificates used when the connection was established.
185     *
186     * @param transportContext value used to set the transport context
187     */
188    public void setTransportContext(Object transportContext) {
189        this.transportContext = transportContext;
190    }
191
192    /**
193     * @openwire:property version=2
194     * @return the clientMaster
195     */
196    public boolean isClientMaster() {
197        return this.clientMaster;
198    }
199
200    /**
201     * @param clientMaster the clientMaster to set
202     */
203    public void setClientMaster(boolean clientMaster) {
204        this.clientMaster = clientMaster;
205    }
206
207    /**
208     * @openwire:property version=6 cache=false
209     * @return the faultTolerant
210     */
211    public boolean isFaultTolerant() {
212        return this.faultTolerant;
213    }
214
215    /**
216     * @param faultTolerant the faultTolerant to set
217     */
218    public void setFaultTolerant(boolean faultTolerant) {
219        this.faultTolerant = faultTolerant;
220    }
221
222    /**
223     * @openwire:property version=6 cache=false
224     * @return failoverReconnect true if this is a reconnect
225     */
226    public boolean isFailoverReconnect() {
227        return this.failoverReconnect;
228    }
229
230    public void setFailoverReconnect(boolean failoverReconnect) {
231        this.failoverReconnect = failoverReconnect;
232    }
233
234    /**
235     * @openwire:property version=8
236     */
237    public String getClientIp() {
238        return clientIp;
239    }
240
241    public void setClientIp(String clientIp) {
242        this.clientIp = clientIp;
243    }
244}