Package org.astrogrid.samp.web

# Class ListMessageRestriction

java.lang.Object
org.astrogrid.samp.web.ListMessageRestriction

All Implemented Interfaces:
  `MessageRestriction`

public class ListMessageRestriction extends Object implements 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

Fields
Modifier and Type
Field
Description
`static final MessageRestriction`
`ALLOW_ALL`
MessageRestriction that permits all MTypes, except as overridden by `x-samp.mostly-harmless` annotations.
`static final MessageRestriction`
`DEFAULT`
Default MessageRestriction implementation.
`static String[]`
`DEFAULT_SAFE_MTYPES`
Default list of MType patterns returned by `getSafeMTypes()`.
`static final MessageRestriction`
`DENY_ALL`
MessageRestriction that blocks all MTypes, except as overridden by `x-samp.mostly-harmless` annotations.
`static final String`
`SAFE_MTYPE_PROP`
System property used to specify a default list of known safe MTypes, which the `DEFAULT` policy will permit.

## Constructor Summary

Constructors
Constructor
Description
`ListMessageRestriction(boolean allow, String[] mtypes, boolean useSubsInfo)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`static String[]`
`getSafeMTypes()`
Returns a list of MType patterns which are permitted by the DEFAULT policy.
`boolean`
`permitSend(String mtype, Map subsInfo)`
Indicates whether a message covered by a given MType subscription may be sent.
`String`
`toString()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Field Details

### DEFAULT_SAFE_MTYPES

public static String[] DEFAULT_SAFE_MTYPES
Default list of MType patterns returned by `getSafeMTypes()`.

### SAFE_MTYPE_PROP

public static final String SAFE_MTYPE_PROP
System property used to specify a default list of known safe MTypes, which the `DEFAULT` policy will permit. The value is a comma-separated list of MType patterns.

See Also:
  - Constant Field Values

### DEFAULT

public static final MessageRestriction DEFAULT
Default MessageRestriction implementation. The current implementation allows a list of MTypes believed to be safe, as given by calling `getSafeMTypes()`, 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

public static final MessageRestriction ALLOW_ALL
MessageRestriction that permits all MTypes, except as overridden by `x-samp.mostly-harmless` annotations.

### DENY_ALL

public static final MessageRestriction DENY_ALL
MessageRestriction that blocks all MTypes, except as overridden by `x-samp.mostly-harmless` annotations.

## Constructor Details

### ListMessageRestriction

public ListMessageRestriction(boolean allow, String[] mtypes, boolean useSubsInfo)
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 blocked
  `useSubsInfo` - if true, honour x-samp.mostly-harmless subscription annotations

## Method Details

### permitSend

public boolean permitSend(String mtype, Map subsInfo)
Description copied from interface: `MessageRestriction`
Indicates whether a message covered by a given MType subscription may be sent.

Specified by:
  `permitSend` in interface `MessageRestriction`
Parameters:
  `mtype` - the MType string to be sent
  `subsInfo` - the annotation map corresponding to the MType subscription (the value from the Subscriptions map corresponding to the `mtype` key)
Returns:
  true if the message may be sent, false if it is blocked

### toString

public String toString()

Overrides:
  `toString` in class `Object`

### getSafeMTypes

public static String[] 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, the `DEFAULT_SAFE_MTYPES` array is returned.

Returns:
  list of MTypes treated as harmless by default