in aws-xray-recorder-sdk-aws-sdk/src/main/java/com/amazonaws/xray/handlers/TracingHandler.java [219:284]
private HashMap<String, Object> extractRequestParameters(Request<?> request) {
HashMap<String, Object> ret = new HashMap<>();
if (null == awsServiceHandlerManifest) {
return ret;
}
AWSOperationHandlerManifest serviceHandler =
awsServiceHandlerManifest.getOperationHandlerManifest(extractServiceName(request));
if (null == serviceHandler) {
return ret;
}
AWSOperationHandler operationHandler = serviceHandler.getOperationHandler(extractOperationName(request));
if (null == operationHandler) {
return ret;
}
Object originalRequest = request.getOriginalRequest();
if (null != operationHandler.getRequestParameters()) {
operationHandler.getRequestParameters().forEach(parameterName -> {
try {
Object parameterValue = originalRequest
.getClass().getMethod(GETTER_METHOD_NAME_PREFIX + parameterName).invoke(originalRequest);
if (null != parameterValue) {
ret.put(SNAKE_CASE_NAMING_STRATEGY.translate(parameterName), parameterValue);
}
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
logger.error("Error getting request parameter: " + parameterName, e);
}
});
}
if (null != operationHandler.getRequestDescriptors()) {
operationHandler.getRequestDescriptors().forEach((requestKeyName, requestDescriptor) -> {
try {
if (requestDescriptor.isMap() && requestDescriptor.shouldGetKeys()) {
@SuppressWarnings("unchecked")
Map<String, Object> parameterValue =
(Map<String, Object>) originalRequest
.getClass()
.getMethod(GETTER_METHOD_NAME_PREFIX + requestKeyName).invoke(originalRequest);
if (null != parameterValue) {
String renameTo =
null != requestDescriptor.getRenameTo() ? requestDescriptor.getRenameTo() : requestKeyName;
ret.put(SNAKE_CASE_NAMING_STRATEGY.translate(renameTo), parameterValue.keySet());
}
} else if (requestDescriptor.isList() && requestDescriptor.shouldGetCount()) {
@SuppressWarnings("unchecked")
List<Object> parameterValue =
(List<Object>) originalRequest
.getClass().getMethod(GETTER_METHOD_NAME_PREFIX + requestKeyName).invoke(originalRequest);
if (null != parameterValue) {
String renameTo =
null != requestDescriptor.getRenameTo() ? requestDescriptor.getRenameTo() : requestKeyName;
ret.put(SNAKE_CASE_NAMING_STRATEGY.translate(renameTo), parameterValue.size());
}
}
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException | ClassCastException e) {
logger.error("Error getting request parameter: " + requestKeyName, e);
}
});
}
return ret;
}