Package org.astrogrid.samp.web
Class ListMessageRestriction
java.lang.Object
org.astrogrid.samp.web.ListMessageRestriction
- All Implemented Interfaces:
MessageRestriction
General purpose implementation of MessageRestriction.
It allows to either whitelist or blacklist a given list of MType
patterns, with the option for client subscriptions to override
this policy by setting the "x-samp.mostly-harmless" key in the
annotation map corresponding to a given MType subscription.
- Since:
- 23 Nov 2011
- Author:
- Mark Taylor
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final MessageRestrictionMessageRestriction that permits all MTypes, except as overridden byx-samp.mostly-harmlessannotations.static final MessageRestrictionDefault MessageRestriction implementation.static String[]Default list of MType patterns returned bygetSafeMTypes().static final MessageRestrictionMessageRestriction that blocks all MTypes, except as overridden byx-samp.mostly-harmlessannotations.static final StringSystem property used to specify a default list of known safe MTypes, which theDEFAULTpolicy will permit. -
Constructor Summary
ConstructorsConstructorDescriptionListMessageRestriction(boolean allow, String[] mtypes, boolean useSubsInfo) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionstatic String[]Returns a list of MType patterns which are permitted by the DEFAULT policy.booleanpermitSend(String mtype, Map subsInfo) Indicates whether a message covered by a given MType subscription may be sent.toString()
-
Field Details
-
DEFAULT_SAFE_MTYPES
Default list of MType patterns returned bygetSafeMTypes(). -
SAFE_MTYPE_PROP
System property used to specify a default list of known safe MTypes, which theDEFAULTpolicy will permit. The value is a comma-separated list of MType patterns.- See Also:
-
DEFAULT
Default MessageRestriction implementation. The current implementation allows a list of MTypes believed to be safe, as given by callinggetSafeMTypes(), and blocks all others. However, client subscriptions may override this by annotating their subscriptions with an entry having the key "x-samp.mostly-harmless". If this has the value "1" the MType thus annotated is allowed, and if it has the value "0" it is blocked, regardless of the safe list. -
ALLOW_ALL
MessageRestriction that permits all MTypes, except as overridden byx-samp.mostly-harmlessannotations. -
DENY_ALL
MessageRestriction that blocks all MTypes, except as overridden byx-samp.mostly-harmlessannotations.
-
-
Constructor Details
-
ListMessageRestriction
Constructor.- Parameters:
allow- whether the sense of the mtypes list is those that should be allowed (true) or blocked (false)mtypes- mtype patterns to be allowed or blockeduseSubsInfo- if true, honour x-samp.mostly-harmless subscription annotations
-
-
Method Details
-
permitSend
Description copied from interface:MessageRestrictionIndicates whether a message covered by a given MType subscription may be sent.- Specified by:
permitSendin interfaceMessageRestriction- Parameters:
mtype- the MType string to be sentsubsInfo- the annotation map corresponding to the MType subscription (the value from the Subscriptions map corresponding to themtypekey)- Returns:
- true if the message may be sent, false if it is blocked
-
toString
-
getSafeMTypes
Returns a list of MType patterns which are permitted by the DEFAULT policy. If the System Property "jsamp.mtypes.safe" exists, its value is taken as a comma-separated list of known permitted MType patterns. Otherwise, theDEFAULT_SAFE_MTYPESarray is returned.- Returns:
- list of MTypes treated as harmless by default
-