Assure intercept methods to not change the message
This was done by cloning.
This commit is contained in:
@@ -35,7 +35,7 @@ final class BrokerInterceptor implements Interceptor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void notifyClientConnected(final ConnectMessage msg) {
|
public void notifyClientConnected(final ConnectMessage msg) {
|
||||||
handler.onConnect(msg);
|
handler.onConnect(msg.readOnlyClone());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -45,16 +45,16 @@ final class BrokerInterceptor implements Interceptor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void notifyTopicPublished(final PublishMessage msg) {
|
public void notifyTopicPublished(final PublishMessage msg) {
|
||||||
handler.onPublish(msg);
|
handler.onPublish(msg.readOnlyClone());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void notifyTopicSubscribed(final Subscription sub) {
|
public void notifyTopicSubscribed(final Subscription sub) {
|
||||||
handler.onSubscribe(sub);
|
handler.onSubscribe(sub.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void notifyTopicUnsubscribed(final Subscription sub) {
|
public void notifyTopicUnsubscribed(final Subscription sub) {
|
||||||
handler.onUnsubscribe(sub);
|
handler.onUnsubscribe(sub.clone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,4 +106,13 @@ public class Subscription implements Serializable {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("[filter:%s, cliID: %s, qos: %s, active: %s]", this.topicFilter, this.clientId, this.requestedQos, this.active);
|
return String.format("[filter:%s, cliID: %s, qos: %s, active: %s]", this.topicFilter, this.clientId, this.requestedQos, this.active);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Subscription clone() {
|
||||||
|
try {
|
||||||
|
return (Subscription) super.clone();
|
||||||
|
} catch (CloneNotSupportedException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -164,4 +164,12 @@ public class ConnectMessage extends AbstractMessage {
|
|||||||
}
|
}
|
||||||
return base;
|
return base;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ConnectMessage readOnlyClone() {
|
||||||
|
try {
|
||||||
|
return (ConnectMessage) super.clone();
|
||||||
|
} catch (CloneNotSupportedException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,4 +54,14 @@ public class PublishMessage extends MessageIDMessage {
|
|||||||
public void setPayload(ByteBuffer payload) {
|
public void setPayload(ByteBuffer payload) {
|
||||||
this.m_payload = payload;
|
this.m_payload = payload;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PublishMessage readOnlyClone() {
|
||||||
|
try {
|
||||||
|
final PublishMessage clone = (PublishMessage) super.clone();
|
||||||
|
clone.m_payload = this.m_payload.asReadOnlyBuffer();
|
||||||
|
return clone;
|
||||||
|
} catch (CloneNotSupportedException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user