Skip to content

Commit ad82b2b

Browse files
committed
Add Jackson JSON as application/mirthapi+json
Signed-off-by: Mitch Gaffigan <[email protected]>
1 parent 6865d88 commit ad82b2b

File tree

6 files changed

+41
-0
lines changed

6 files changed

+41
-0
lines changed
30.9 KB
Binary file not shown.
16.3 KB
Binary file not shown.
35.9 KB
Binary file not shown.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.mirth.connect.client.core.api;
2+
3+
/**
4+
* This class contains custom MIME types used by the Mirth API.
5+
*/
6+
public class ApiContentTypes {
7+
/** Custom MIME type for Mirth API JSON responses */
8+
public static final String APPLICATION_MIRTHAPI_JSON = "application/mirthapi+json";
9+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.mirth.connect.client.core.api.providers;
2+
3+
import javax.ws.rs.ext.ContextResolver;
4+
import javax.ws.rs.ext.Provider;
5+
import com.fasterxml.jackson.annotation.JsonInclude;
6+
import com.fasterxml.jackson.databind.DeserializationFeature;
7+
import com.fasterxml.jackson.databind.ObjectMapper;
8+
import com.fasterxml.jackson.databind.SerializationFeature;
9+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
10+
11+
@Provider
12+
public class JacksonJsonObjectMapperConfig implements ContextResolver<ObjectMapper> {
13+
14+
private final ObjectMapper objectMapper;
15+
16+
public JacksonJsonObjectMapperConfig() {
17+
objectMapper = new ObjectMapper();
18+
// Be forward compatible with unknown properties
19+
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
20+
// Match the Swagger documented format for dates and null handling
21+
objectMapper.registerModule(new JavaTimeModule());
22+
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
23+
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
24+
}
25+
26+
@Override
27+
public ObjectMapper getContext(Class<?> aClass) {
28+
return objectMapper;
29+
}
30+
}

server/src/com/mirth/connect/server/MirthWebServer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,8 @@ private void addApiServlets(HandlerList handlers, ServletContextHandler apiServl
471471
}
472472

473473
ApiProviders apiProviders = getApiProviders(apiVersion);
474+
apiProviders.providerClasses.add(com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider.class);
475+
apiProviders.providerClasses.add(com.mirth.connect.client.core.api.providers.JacksonJsonObjectMapperConfig.class);
474476

475477
// Add versioned Jersey API servlet
476478
ServletHolder jerseyVersionedServlet = apiServletContextHandler.addServlet(ServletContainer.class, "/*");

0 commit comments

Comments
 (0)