blob: 9f07ec336798ada5aa24d74e36bce9f08ff5b3ec [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.apache.activemq.openwire.commands;
import org.apache.activemq.openwire.annotations.OpenWireType;
import org.apache.activemq.openwire.annotations.OpenWireExtension;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Base class for the Temporary Destination types.
*
* @openwire:marshaller
*/
@OpenWireType(typeCode = 0)
public abstract class OpenWireTempDestination extends OpenWireDestination {
private static final Logger LOG = LoggerFactory.getLogger(OpenWireTempDestination.class);
@OpenWireExtension
protected transient String connectionId;
@OpenWireExtension
protected transient int sequenceId;
public OpenWireTempDestination() {
}
public OpenWireTempDestination(String name) {
super(name);
}
public OpenWireTempDestination(String connectionId, long sequenceId) {
super(connectionId + ":" + sequenceId);
}
@Override
public boolean isTemporary() {
return true;
}
@Override
public void setPhysicalName(String physicalName) {
super.setPhysicalName(physicalName);
if (!isComposite()) {
// Parse off the sequenceId off the end. this can fail if the temporary destination is
// generated by another JMS system via the JMS<->JMS Bridge
int p = this.physicalName.lastIndexOf(":");
if (p >= 0) {
String seqStr = this.physicalName.substring(p + 1).trim();
if (seqStr != null && seqStr.length() > 0) {
try {
sequenceId = Integer.parseInt(seqStr);
} catch (NumberFormatException e) {
LOG.debug("Did not parse sequence Id from {}", physicalName);
}
// The rest should be the connection id.
connectionId = this.physicalName.substring(0, p);
}
}
}
}
/**
* @return the ConnectionId that created this Temporary Destination
*/
public String getConnectionId() {
return connectionId;
}
/**
* Sets the ConnectionId String for the connection that created this Temporary Destination.
*
* @param connectionId
* the ConnectionId String of the parent Connection.
*/
public void setConnectionId(String connectionId) {
this.connectionId = connectionId;
}
/**
* @return the sequence Id used to generate this Temporary Destination.
*/
public int getSequenceId() {
return sequenceId;
}
}