sPFShared/src/main/java/it/polimi/spf/shared/model/SPFAction.java
public static SPFAction fromJSON(String json) {
		try {
			JSONObject o = new JSONObject(json);
			int type = o.getInt(KEY_TYPE);
			switch (type) {
			case TYPE_INTENT:
				return new SPFActionIntent(o);
			case TYPE_NOTIFICATION:
				return new SPFActionSendNotification(o);
			default:
				throw new IllegalArgumentException("Unknown action type: " + type);
			}

		} catch (JSONException e) {
			throw new IllegalArgumentException("JSON does not represent a valid SPFAction");
		}
	}
public static SPFAction fromJSON(String json) {
		try {
			JSONObject o = new JSONObject(json);
			int type = o.getInt(KEY_TYPE);
			switch (type) {
			case TYPE_INTENT:
				return new SPFActionIntent(o);
			case TYPE_NOTIFICATION:
				return new SPFActionSendNotification(o);
			default:
				throw new IllegalArgumentException("Unknown action type: " + type);
			}

		} catch (JSONException e) {
			throw new IllegalArgumentException("JSON does not represent a valid SPFAction");
		}
	}
public static SPFAction fromJSON ( String json ) { try { JSONObject o = new JSONObject ( json ) ; int type = o . getInt ( KEY_TYPE ) ; switch ( type ) { case TYPE_INTENT : return new SPFActionIntent ( o ) ; case TYPE_NOTIFICATION : return new SPFActionSendNotification ( o ) ; default : throw new IllegalArgumentException ( "Unknown action type: " + type ) ; } } catch ( JSONException e ) { throw new IllegalArgumentException ( "JSON does not represent a valid SPFAction" ) ; } }
TODO comment

@return
TODO comment