o mutators on Artifact return new instances so the setFile(file) operation is not populating the file on the existing artifact but returning a new one which is a copy with the file populated. in this use the artifact is being returned without the file set causing an NPE in the caller.