Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
title: using object-mapper from SolrJacksonMapper for V2Api
type: fixed
authors:
- name: Renato Haeberli

links:
- name: PR#4370
url: https://github.com/apache/solr/pull/4370
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ public static class CachingJsonMessageBodyReader extends CachingDelegatingMessag
implements MessageBodyReader<Object> {
@Override
public MessageBodyReader<Object> getDelegate() {
return new JacksonJsonProvider().configure(JsonParser.Feature.ALLOW_COMMENTS, true);
return new JacksonJsonProvider(SolrJacksonMapper.getObjectMapper())
.configure(JsonParser.Feature.ALLOW_COMMENTS, true);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,15 @@
import static org.mockito.Mockito.when;

import jakarta.ws.rs.container.ContainerRequestContext;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedHashMap;
import jakarta.ws.rs.core.UriInfo;
import java.io.ByteArrayInputStream;
import java.lang.annotation.Annotation;
import java.nio.charset.StandardCharsets;
import java.util.List;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.client.api.model.CreateCollectionRequestBody;
import org.apache.solr.client.api.model.CreateReplicaRequestBody;
import org.junit.BeforeClass;
import org.junit.Test;
Expand Down Expand Up @@ -96,6 +101,30 @@ public void testBuildQueryParameterString_ExcludesFilteredParameters() {
assertEquals("paramName1=paramValue1&paramName2=paramValue2", queryParamStr);
}

@Test
@SuppressWarnings("unchecked")
public void testCachingJsonMessageBodyReaderDelegateUsesConfiguredObjectMapper()
throws Exception {
final var delegate = new MessageBodyReaders.CachingJsonMessageBodyReader().getDelegate();

final var entityStream =
new ByteArrayInputStream(
"{\"name\": \"test\", \"unknownField\": \"someValue\"}"
.getBytes(StandardCharsets.UTF_8));

final var result =
(CreateCollectionRequestBody)
delegate.readFrom(
(Class<Object>) (Class<?>) CreateCollectionRequestBody.class,
CreateCollectionRequestBody.class,
new Annotation[0],
MediaType.APPLICATION_JSON_TYPE,
new MultivaluedHashMap<>(),
entityStream);

assertEquals("test", result.name);
}

@Test
public void testRequestBodyStringIsEmptyIfNoRequestBodyFound() {
// NOTE: no request body is set on the context.
Expand Down
Loading