У меня есть метод ресурса, который обрабатывает запросы POST следующим образом
@POST
public UploadLink postFilesByCustomerId(Attachment attachment) {
checkIsValidForPost(attachment);
Integer id = new AttachmentService(user).createNew(attachment);
URI uri = LinkBuilder.getUriFromResource(this.getClass(), id);
String uploadLink = fileServer.getUploadLinkForFile(user.getLogicalDB(), attachment.getUuid(), attachment.getFileName());
UploadLink uLink = new UploadLink();
uLink.setAttachmentLocation(uri);
uLink.setUploadLink(uploadLink);
return uLink;
}
По сути, он принимает экземпляр класса Attachment в качестве аргумента, проверьте, является ли он действительным для POST.Затем создается новая строка с уникальным идентификатором с использованием данных POST, а файловый сервер создает ссылку для загрузки для фактической загрузки файла.UploadLink - это простой POJO, который содержит местоположение ресурса, созданного POST, и ссылку для загрузки, созданную файловым сервером.Затем метод возвращает UploadLink.Когда я тестирую этот API с помощью модульного теста следующим образом, я получаю желаемый вывод.
@Test
public void testPojoPost() throws JsonProcessingException {
Attachment a = new Attachment();
a.setCustomerId(101);
a.setSize(3072);
a.setFileName("test2.png");
Response r = post().target("/attachments").entity(a).execute();
UploadLink uploadLink = ResponseDeserializer.getSinglePojo(r,UploadLink.class);
System.out.println("UploadLink uploadLink=" + uploadLink.getUploadLink() + ", attachmentLocation=" + uploadLink.getAttachmentLocation());
}
Это результат выполнения модульного теста (я пропустил URL-адрес сервера)
Во время модульного тестирования конечная точка возвращает объект Uploadlink и печатает как местоположение, так и ссылку для загрузки.Но затем я пытаюсь вызвать этот API из Java-клиента следующим образом.
UploadLink uploadLink = RestClient.post().attachments().execute(attachment);
System.out.println(uploadLink.getUploadLink()+""+uploadLink.getAttachmentLocation());
Это все еще записывает данные в таблицу базы данных.В клиенте у меня есть другой сервис, который предоставляет данные для POST.Программа выдает мне исключение нулевого указателя, когда оно достигает System.out.println(uploadLink.getUploadLink()+""+uploadLink.getAttachmentLocation());
Я не знаю, чего мне здесь не хватает, и чувствую себя немного глупо, так как тест работает нормально и возвращает нужный объект.Я бы очень признателен за любую помощь / предложение с этим.Это держало меня в курсе.