use of edu.umass.cs.gnscommon.exceptions.server.InternalRequestException in project GNS by MobilityFirst.
the class NSFieldAccess method lookupFieldsLocalNoAuth.
/**
*
* @param header
* @param guid
* @param fields
* @param returnFormat
* @param handler
* @return a values map
* @throws FailedDBOperationException
*/
public static ValuesMap lookupFieldsLocalNoAuth(InternalRequestHeader header, String guid, List<String> fields, ColumnFieldType returnFormat, ClientRequestHandlerInterface handler) throws FailedDBOperationException {
// Try to look up the value in the database
try {
ClientSupportConfig.getLogger().log(Level.FINE, "Fields={0} Format={1}", new Object[] { fields, returnFormat });
String[] fieldArray = new String[fields.size()];
fieldArray = fields.toArray(fieldArray);
// Grab the fields the user wanted
NameRecord nameRecord = NameRecord.getNameRecordMultiUserFields(handler.getApp().getDB(), guid, returnFormat, fieldArray);
if (nameRecord != null) {
// active code handling
ValuesMap valuesMap = nameRecord.getValuesMap();
//if (!Config.getGlobalBoolean(GNSConfig.GNSC.DISABLE_ACTIVE_CODE)) {
try {
JSONObject result = ActiveCodeHandler.handleActiveCode(header, guid, null, ActiveCode.READ_ACTION, valuesMap, handler.getApp().getDB());
valuesMap = result != null ? new ValuesMap(result) : valuesMap;
} catch (InternalRequestException e) {
e.printStackTrace();
}
//}
return valuesMap;
}
} catch (RecordNotFoundException e) {
ClientSupportConfig.getLogger().log(Level.FINE, "Record not found for name: {0}", guid);
} catch (FieldNotFoundException e) {
ClientSupportConfig.getLogger().log(Level.FINE, "Field not found for {0} : {1}", new Object[] { guid, e });
}
return null;
}
use of edu.umass.cs.gnscommon.exceptions.server.InternalRequestException in project GNS by MobilityFirst.
the class AddToGroup method execute.
@Override
public CommandResponse execute(InternalRequestHeader header, CommandPacket commandPacket, ClientRequestHandlerInterface handler) throws InvalidKeyException, InvalidKeySpecException, JSONException, NoSuchAlgorithmException, SignatureException, ParseException {
JSONObject json = commandPacket.getCommand();
String guid = json.getString(GNSProtocol.GUID.toString());
String member = json.getString(GNSProtocol.MEMBER.toString());
// writer might be same as guid
String writer = json.optString(GNSProtocol.WRITER.toString(), guid);
// signature and message can be empty for unsigned cases
String signature = json.optString(GNSProtocol.SIGNATURE.toString(), null);
String message = json.optString(GNSProtocol.SIGNATUREFULLMESSAGE.toString(), null);
Date timestamp = json.has(GNSProtocol.TIMESTAMP.toString()) ? Format.parseDateISO8601UTC(json.getString(GNSProtocol.TIMESTAMP.toString())) : // can be null on older client
null;
ResponseCode responseCode;
try {
if (!(responseCode = GroupAccess.addToGroup(header, guid, member, writer, signature, message, timestamp, handler)).isExceptionOrError()) {
return new CommandResponse(ResponseCode.NO_ERROR, GNSProtocol.OK_RESPONSE.toString());
} else {
return new CommandResponse(responseCode, GNSProtocol.BAD_RESPONSE.toString() + " " + responseCode.getProtocolCode());
}
} catch (ClientException | IOException | InternalRequestException e) {
return new CommandResponse(ResponseCode.UNSPECIFIED_ERROR, GNSProtocol.BAD_RESPONSE.toString() + " " + GNSProtocol.UNSPECIFIED_ERROR.toString() + " " + e.getMessage());
}
}
use of edu.umass.cs.gnscommon.exceptions.server.InternalRequestException in project GNS by MobilityFirst.
the class AccountAccess method lookupAccountInfoFromGuid.
/**
* Obtains the account info record for the given guid if that guid was used
* to createField an account.
* <p>
* GUID: "ACCOUNT_INFO" -- {account} for primary guid<br>
* GUID: "GUID" -- guid (primary) for secondary guid<br>
* GUID: "GUID_INFO" -- {guid info}<br>
* HRN: "GUID" -- GUID<br>
* <p>
* GUID = Globally Unique Identifier<br>
* HRN = Human Readable Name<br>
*
* @param guid
* @param handler
* @param allowRemoteLookup
* @return the account info record or null if it could not be found
*/
private static AccountInfo lookupAccountInfoFromGuid(InternalRequestHeader header, String guid, ClientRequestHandlerInterface handler, boolean allowRemoteLookup) {
try {
ValuesMap result = NSFieldAccess.lookupJSONFieldLocalNoAuth(null, guid, ACCOUNT_INFO, handler.getApp(), false);
GNSConfig.getLogger().log(Level.FINE, "ValuesMap for {0} / {1}: {2}", new Object[] { guid, ACCOUNT_INFO, result != null ? result.getSummary() : result });
if (result != null) {
return new AccountInfo(new JSONObject(result.getString(ACCOUNT_INFO)));
}
} catch (FailedDBOperationException | JSONException | ParseException e) {
// Do nothing as this is a normal result when the record doesn't
// exist.
}
GNSConfig.getLogger().log(Level.FINE, "ACCOUNT_INFO NOT FOUND for {0}", guid);
if (allowRemoteLookup) {
GNSConfig.getLogger().log(Level.FINE, "LOOKING REMOTELY for ACCOUNT_INFO for {0}", guid);
String value = null;
try {
value = handler.getInternalClient().execute(GNSCommandInternal.fieldRead(guid, ACCOUNT_INFO, header)).getResultString();
} catch (IOException | JSONException | ClientException e) {
} catch (InternalRequestException e) {
//FIXME: This should do something other than print a stack trace
e.printStackTrace();
}
// exist.
if (value != null) {
try {
return new AccountInfo(new JSONObject(value));
} catch (JSONException | ParseException e) {
// Do nothing as this is a normal result when the record
// doesn't exist.
}
}
}
return null;
}
use of edu.umass.cs.gnscommon.exceptions.server.InternalRequestException in project GNS by MobilityFirst.
the class AccountAccess method lookupPrimaryGuid.
/**
* If this is a subguid associated with an account, returns the guid of that
* account, otherwise returns null.
* <p>
* guid = Globally Unique Identifier
*
* @param header
* @param guid
* @param handler
* @param allowRemoteLookup
* @return a guid
*/
public static String lookupPrimaryGuid(InternalRequestHeader header, String guid, ClientRequestHandlerInterface handler, boolean allowRemoteLookup) {
try {
ValuesMap result = NSFieldAccess.lookupJSONFieldLocalNoAuth(null, guid, PRIMARY_GUID, handler.getApp(), false);
GNSConfig.getLogger().log(Level.FINE, "ValuesMap for {0} / {1}: {2}", new Object[] { guid, PRIMARY_GUID, result });
if (result != null) {
return result.getString(PRIMARY_GUID);
}
} catch (FailedDBOperationException | JSONException e) {
GNSConfig.getLogger().log(Level.SEVERE, "Problem extracting PRIMARY_GUID from {0} :{1}", new Object[] { guid, e });
}
String value = null;
GNSConfig.getLogger().log(Level.FINE, "PRIMARY_GUID NOT FOUND LOCALLY for {0}", guid);
if (allowRemoteLookup) {
GNSConfig.getLogger().log(Level.FINE, "LOOKING REMOTELY for PRIMARY_GUID for {0}", guid);
try {
value = handler.getInternalClient().execute(GNSCommandInternal.fieldRead(guid, PRIMARY_GUID, header)).getResultString();
if (!FieldAccess.SINGLE_FIELD_VALUE_ONLY && value != null) {
value = new JSONObject(value).getString(PRIMARY_GUID);
}
} catch (IOException | JSONException | ClientException | InternalRequestException e) {
GNSConfig.getLogger().log(Level.SEVERE, "Problem getting HRN_GUID for {0} from remote server: {1}", new Object[] { guid, e });
}
}
return value;
}
use of edu.umass.cs.gnscommon.exceptions.server.InternalRequestException in project GNS by MobilityFirst.
the class AccountAccess method lookupGuidInfo.
/**
* Obtains the guid info record from the database for guid given.
* <p>
* guid = Globally Unique Identifier<br>
*
* @param guid
* @param handler
* @param allowRemoteLookup
* @return an {@link GuidInfo} instance
*/
private static GuidInfo lookupGuidInfo(InternalRequestHeader header, String guid, ClientRequestHandlerInterface handler, boolean allowRemoteLookup) {
GuidInfo result;
if ((result = GUID_INFO_CACHE.getIfPresent(guid)) != null) {
GNSConfig.getLogger().log(Level.FINE, "GuidInfo found in cache {0}", guid);
return result;
}
GNSConfig.getLogger().log(Level.FINE, "allowRemoteLookup is {0}", allowRemoteLookup);
try {
ValuesMap valuesMapResult = NSFieldAccess.lookupJSONFieldLocalNoAuth(null, guid, GUID_INFO, handler.getApp(), false);
GNSConfig.getLogger().log(Level.FINE, "ValuesMap for {0} / {1} {2}", new Object[] { guid, GUID_INFO, valuesMapResult != null ? valuesMapResult.getSummary() : valuesMapResult });
if (valuesMapResult != null) {
result = new GuidInfo(new JSONObject(valuesMapResult.getString(GUID_INFO)));
GUID_INFO_CACHE.put(guid, result);
return result;
}
} catch (FailedDBOperationException | JSONException | ParseException e) {
GNSConfig.getLogger().log(Level.SEVERE, "Problem extracting GUID_INFO from {0} :{1}", new Object[] { guid, e });
}
GNSConfig.getLogger().log(Level.FINE, "GUID_INFO NOT FOUND for {0}", guid);
if (allowRemoteLookup) {
GNSConfig.getLogger().log(Level.FINE, "LOOKING REMOTELY for GUID_INFO for {0}", guid);
String value = null;
Object obj;
try {
value = (obj = handler.getInternalClient().execute(GNSCommandInternal.fieldRead(guid, GUID_INFO, header)).getResultMap().get(GUID_INFO)) != null ? obj.toString() : value;
} catch (IOException | JSONException | ClientException | InternalRequestException e) {
GNSConfig.getLogger().log(Level.SEVERE, "Problem getting GUID_INFO for {0} from remote server: {1}", new Object[] { guid, e });
}
if (value != null) {
try {
result = new GuidInfo(new JSONObject(value));
GUID_INFO_CACHE.put(guid, result);
return result;
} catch (JSONException | ParseException e) {
GNSConfig.getLogger().log(Level.SEVERE, "Problem parsing GUID_INFO value from remote server for {0}: {1}", new Object[] { guid, e });
}
}
}
return null;
}
Aggregations