This commit is contained in:
Rossen Stoyanchev 2017-11-01 09:21:21 -04:00
parent 64bc9b4311
commit b35b50bef1
2 changed files with 30 additions and 24 deletions

View File

@ -22,13 +22,30 @@ import java.util.Iterator;
import org.springframework.lang.Nullable;
/**
* A base class for {@link MessageCondition} types providing implementations of
* {@link #equals(Object)}, {@link #hashCode()}, and {@link #toString()}.
* Base class for {@code MessageCondition's} that pre-declares abstract methods
* {@link #getContent()} and {@link #getToStringInfix()} in order to provide
* implementations of {@link #equals(Object)}, {@link #hashCode()}, and
* {@link #toString()}.
*
* @author Rossen Stoyanchev
* @since 4.0
*/
public abstract class AbstractMessageCondition<T extends AbstractMessageCondition<T>> implements MessageCondition<T> {
public abstract class AbstractMessageCondition<T extends AbstractMessageCondition<T>>
implements MessageCondition<T> {
/**
* Return the collection of objects the message condition is composed of
* (e.g. destination patterns), never {@code null}.
*/
protected abstract Collection<?> getContent();
/**
* The notation to use when printing discrete items of content.
* For example " || " for URL patterns or " && " for param expressions.
*/
protected abstract String getToStringInfix();
@Override
public boolean equals(@Nullable Object obj) {
@ -61,17 +78,4 @@ public abstract class AbstractMessageCondition<T extends AbstractMessageConditio
return builder.toString();
}
/**
* Return the collection of objects the message condition is composed of
* (e.g. destination patterns), never {@code null}.
*/
protected abstract Collection<?> getContent();
/**
* The notation to use when printing discrete items of content.
* For example " || " for URL patterns or " && " for param expressions.
*/
protected abstract String getToStringInfix();
}

View File

@ -16,8 +16,9 @@
package org.springframework.messaging.simp;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import org.springframework.lang.Nullable;
import org.springframework.messaging.Message;
@ -25,7 +26,8 @@ import org.springframework.messaging.handler.AbstractMessageCondition;
import org.springframework.util.Assert;
/**
* A message condition that checks the message type.
* {@code MessageCondition} that matches by the message type obtained via
* {@link SimpMessageHeaderAccessor#getMessageType(Map)}.
*
* @author Rossen Stoyanchev
* @since 4.0
@ -58,7 +60,7 @@ public class SimpMessageTypeMessageCondition extends AbstractMessageCondition<Si
@Override
protected Collection<?> getContent() {
return Arrays.asList(this.messageType);
return Collections.singletonList(this.messageType);
}
@Override
@ -80,15 +82,15 @@ public class SimpMessageTypeMessageCondition extends AbstractMessageCondition<Si
@Override
public int compareTo(SimpMessageTypeMessageCondition other, Message<?> message) {
Object actualMessageType = SimpMessageHeaderAccessor.getMessageType(message.getHeaders());
if (actualMessageType != null) {
if (actualMessageType.equals(this.getMessageType()) && actualMessageType.equals(other.getMessageType())) {
Object actual = SimpMessageHeaderAccessor.getMessageType(message.getHeaders());
if (actual != null) {
if (actual.equals(this.messageType) && actual.equals(other.getMessageType())) {
return 0;
}
else if (actualMessageType.equals(this.getMessageType())) {
else if (actual.equals(this.messageType)) {
return -1;
}
else if (actualMessageType.equals(other.getMessageType())) {
else if (actual.equals(other.getMessageType())) {
return 1;
}
}