in initializr-actuator/src/main/java/io/spring/initializr/actuate/stat/ProjectRequestDocumentFactory.java [49:126]
public ProjectRequestDocument createDocument(ProjectRequestEvent event) {
InitializrMetadata metadata = this.metadataProvider.get();
ProjectRequest request = event.getProjectRequest();
ProjectRequestDocument document = new ProjectRequestDocument();
document.setGenerationTimestamp(event.getTimestamp());
handleCloudFlareHeaders(request, document);
String candidate = (String) request.getParameters().get("x-forwarded-for");
if (!StringUtils.hasText(document.getRequestIp()) && candidate != null) {
document.setRequestIp(candidate);
document.setRequestIpv4(extractIpv4(candidate));
}
Agent agent = extractAgentInformation(request);
if (agent != null) {
document.setClientId(agent.getId().getId());
document.setClientVersion(agent.getVersion());
}
document.setGroupId(request.getGroupId());
document.setArtifactId(request.getArtifactId());
document.setPackageName(request.getPackageName());
document.setBootVersion(request.getBootVersion());
document.setJavaVersion(request.getJavaVersion());
if (StringUtils.hasText(request.getJavaVersion())
&& metadata.getJavaVersions().get(request.getJavaVersion()) == null) {
document.setInvalid(true);
document.setInvalidJavaVersion(true);
}
document.setLanguage(request.getLanguage());
if (StringUtils.hasText(request.getLanguage())
&& metadata.getLanguages().get(request.getLanguage()) == null) {
document.setInvalid(true);
document.setInvalidLanguage(true);
}
document.setPackaging(request.getPackaging());
if (StringUtils.hasText(request.getPackaging())
&& metadata.getPackagings().get(request.getPackaging()) == null) {
document.setInvalid(true);
document.setInvalidPackaging(true);
}
document.setType(request.getType());
if (StringUtils.hasText(request.getType())
&& metadata.getTypes().get(request.getType()) == null) {
document.setInvalid(true);
document.setInvalidType(true);
}
// Let's not rely on the resolved dependencies here
List<String> dependencies = new ArrayList<>();
dependencies.addAll(request.getStyle());
dependencies.addAll(request.getDependencies());
dependencies.forEach((id) -> {
if (metadata.getDependencies().get(id) != null) {
document.getDependencies().add(id);
}
else {
document.setInvalid(true);
document.getInvalidDependencies().add(id);
}
});
// Let's make sure that the document is flagged as invalid no matter what
if (event instanceof ProjectFailedEvent) {
ProjectFailedEvent failed = (ProjectFailedEvent) event;
document.setInvalid(true);
if (failed.getCause() != null) {
document.setErrorMessage(failed.getCause().getMessage());
}
}
return document;
}