@Override public CommandResponse execute(JSONObject json, ClientRequestHandlerInterface handler) throws InvalidKeyException, InvalidKeySpecException, JSONException, NoSuchAlgorithmException, SignatureException, ParseException { String guid = json.getString(GNSProtocol.GUID.toString()); String field = json.getString(GNSProtocol.FIELD.toString()); String accessType = json.getString(GNSProtocol.ACL_TYPE.toString()); // allows someone other than guid to read acl, defaults to guid String reader = json.optString(GNSProtocol.READER.toString(), guid); String signature = json.getString(GNSProtocol.SIGNATURE.toString()); String message = json.getString(GNSProtocol.SIGNATUREFULLMESSAGE.toString()); Date timestamp = json.has(GNSProtocol.TIMESTAMP.toString()) ? Format.parseDateISO8601UTC(json.getString(GNSProtocol.TIMESTAMP.toString())) : null; // can be null on older client MetaDataTypeName access; if ((access = MetaDataTypeName.valueOf(accessType)) == null) { return new CommandResponse( ResponseCode.BAD_ACL_TYPE_ERROR, GNSProtocol.BAD_RESPONSE.toString() + " " + GNSProtocol.BAD_ACL_TYPE.toString() + "Should be one of " + Arrays.toString(MetaDataTypeName.values())); } return new CommandResponse( ResponseCode.NO_ERROR, Boolean.toString( FieldMetaData.fieldExists( access, guid, field, reader, signature, message, timestamp, handler))); }