/
AmqpTarget.java
70 lines (59 loc) · 2.33 KB
/
AmqpTarget.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
* Copyright (c) 2017-2018 Bosch Software Innovations GmbH.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/index.php
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.services.connectivity.messaging.amqp;
import java.util.Objects;
import javax.jms.Destination;
import org.apache.qpid.jms.JmsQueue;
import org.apache.qpid.jms.JmsTopic;
import org.eclipse.ditto.model.base.common.ConditionChecker;
import org.eclipse.ditto.services.connectivity.messaging.PublishTarget;
/**
* An {@link AmqpTarget} holds a JMS {@link Destination}.
*/
public final class AmqpTarget implements PublishTarget {
private static final String TOPIC_PREFIX = "topic://";
private static final String QUEUE_PREFIX = "queue://";
private static final String EMPTY_STRING = "";
private final Destination jmsDestination;
private AmqpTarget(final Destination jmsDestination) {this.jmsDestination = jmsDestination;}
static AmqpTarget fromTargetAddress(final String targetAddress) {
ConditionChecker.argumentNotEmpty(targetAddress, "targetAddress");
final Destination destination;
if (targetAddress.startsWith(TOPIC_PREFIX)) {
destination = new JmsTopic(targetAddress.replace(TOPIC_PREFIX, EMPTY_STRING));
} else if (targetAddress.startsWith(QUEUE_PREFIX)) {
destination = new JmsQueue(targetAddress.replace(QUEUE_PREFIX, EMPTY_STRING));
} else {
destination = new JmsQueue(targetAddress);
}
return new AmqpTarget(destination);
}
Destination getJmsDestination() {
return jmsDestination;
}
@Override
public boolean equals(final Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
final AmqpTarget that = (AmqpTarget) o;
return Objects.equals(jmsDestination, that.jmsDestination);
}
@Override
public int hashCode() {
return Objects.hash(jmsDestination);
}
@Override
public String toString() {
return getClass().getSimpleName() + " [" +
"jmsDestination=" + jmsDestination +
"]";
}
}