diff --git a/.gitignore b/.gitignore
index 2c6464a..e6a337a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,3 +30,5 @@ bin
*.iml
*.sh
tty.sh
+.okhttpcache/*
+.okhttpcache
\ No newline at end of file
diff --git a/.travis/settings.xml b/.travis/settings.xml
new file mode 100644
index 0000000..bb3252e
--- /dev/null
+++ b/.travis/settings.xml
@@ -0,0 +1,18 @@
+
+
+
+ ossrh
+ ${env.NEXUS_USERNAME}
+ ${env.NEXUS_PASSWORD}
+
+
+ github
+ ${env.GITHUB_USERNAME}
+ ${env.GITHUB_TOKEN}
+
+
+
+
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..116c3d1
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,1351 @@
+# Changelog
+Proteus Changelog.
+
+## Unreleased
+### No issue
+
+**Add gzip MediaType.**
+
+
+[d94ba8d090dabad](https://github.com/noboomu/proteus/commit/d94ba8d090dabad) Joshua Bauer *2019-09-12 18:19:12*
+
+**Fix for maven parent pom.**
+
+
+[8c54d0b393d33a3](https://github.com/noboomu/proteus/commit/8c54d0b393d33a3) joshua bauer *2019-09-12 06:20:53*
+
+**Minor media handling improvements.**
+
+
+[b180b7d7f2e84c0](https://github.com/noboomu/proteus/commit/b180b7d7f2e84c0) joshua bauer *2019-09-05 22:13:02*
+
+
+## v0.4.2
+### No issue
+
+**Prepare release.**
+
+
+[27d44eba4072b87](https://github.com/noboomu/proteus/commit/27d44eba4072b87) Joshua Bauer *2019-08-30 18:38:30*
+
+**Fix scm.**
+
+
+[9453aafdd3893fc](https://github.com/noboomu/proteus/commit/9453aafdd3893fc) Joshua Bauer *2019-08-30 18:36:28*
+
+**Improve release method.**
+
+
+[d5ae4e473ab9fda](https://github.com/noboomu/proteus/commit/d5ae4e473ab9fda) Joshua Bauer *2019-08-30 18:34:33*
+
+**More MediaType improvements.**
+
+
+[128dd20b98e14b6](https://github.com/noboomu/proteus/commit/128dd20b98e14b6) Joshua Bauer *2019-08-30 18:28:18*
+
+**Fix uninitialized map in MediaType.**
+
+
+[ffc30c2c3d0608f](https://github.com/noboomu/proteus/commit/ffc30c2c3d0608f) Joshua Bauer *2019-08-14 20:16:18*
+
+**Bump version. Improve MediaType.**
+
+
+[b6ca5ecac2f9610](https://github.com/noboomu/proteus/commit/b6ca5ecac2f9610) Joshua Bauer *2019-08-14 20:10:01*
+
+
+## v0.4.1
+### No issue
+
+**Update README.md**
+
+
+[b243c609c1c562a](https://github.com/noboomu/proteus/commit/b243c609c1c562a) JL Bauer *2019-07-11 18:57:04*
+
+**Remove backups.**
+
+
+[f9a07d4307d86d0](https://github.com/noboomu/proteus/commit/f9a07d4307d86d0) Joshua Bauer *2019-07-11 18:50:36*
+
+**Bump to version 0.4.1.**
+
+
+[2c69be917d24fd9](https://github.com/noboomu/proteus/commit/2c69be917d24fd9) Joshua Bauer *2019-07-11 18:49:01*
+
+**Better error handling.**
+
+
+[c412faac8339c3a](https://github.com/noboomu/proteus/commit/c412faac8339c3a) Joshua Bauer *2019-06-29 00:43:37*
+
+**Better CompletableFuture implementation.**
+
+
+[452e82a47483d23](https://github.com/noboomu/proteus/commit/452e82a47483d23) Joshua Bauer *2019-06-25 22:11:15*
+
+**Ignore tty.**
+
+
+[51bdb9f3a494313](https://github.com/noboomu/proteus/commit/51bdb9f3a494313) Joshua Bauer *2019-05-28 18:49:37*
+
+**Cleanup ServerResponse.**
+
+
+[f077d7c7d99e4d6](https://github.com/noboomu/proteus/commit/f077d7c7d99e4d6) Joshua Bauer *2019-05-28 18:47:22*
+
+**Cleanup ServerResponse.**
+
+
+[c62f32652ec4887](https://github.com/noboomu/proteus/commit/c62f32652ec4887) Joshua Bauer *2019-05-28 18:46:00*
+
+**Support for wrapper DI.**
+
+
+[22cefa4f5b498c7](https://github.com/noboomu/proteus/commit/22cefa4f5b498c7) Joshua Bauer *2019-05-21 20:51:26*
+
+**Added JsonView wrapper support.**
+
+
+[0fbc2ae3d2c2e39](https://github.com/noboomu/proteus/commit/0fbc2ae3d2c2e39) Joshua Bauer *2019-05-17 23:19:11*
+
+**Support for compiling on jdk > 8.**
+
+
+[d024cc1bbe6e101](https://github.com/noboomu/proteus/commit/d024cc1bbe6e101) Joshua Bauer *2019-05-14 19:48:44*
+
+**Improved MediaType handling.**
+
+
+[13e6ce03a4cce82](https://github.com/noboomu/proteus/commit/13e6ce03a4cce82) Joshua Bauer *2019-05-14 19:00:25*
+
+**Always use base ServerModelResolver and add additional classes via converterClasses config property.**
+
+
+[94b4dd4116d2bfc](https://github.com/noboomu/proteus/commit/94b4dd4116d2bfc) Joshua Bauer *2019-04-23 16:11:40*
+
+**Added support for customizing OpenAPI type converters and externalized Jackson module.**
+
+
+[6375bfa1910ca71](https://github.com/noboomu/proteus/commit/6375bfa1910ca71) Joshua Bauer *2019-04-23 16:01:51*
+
+**Added support for more flexible schemas.**
+
+
+[80ab753f08830b9](https://github.com/noboomu/proteus/commit/80ab753f08830b9) Joshua Bauer *2019-04-23 01:21:27*
+
+**Make JacksonModule more flexible.**
+
+
+[04ce8d317c555dc](https://github.com/noboomu/proteus/commit/04ce8d317c555dc) Joshua Bauer *2019-04-22 18:54:04*
+
+**Externalize object mapper.**
+
+
+[3c818b72fd54caa](https://github.com/noboomu/proteus/commit/3c818b72fd54caa) Joshua Bauer *2019-04-22 18:52:36*
+
+**Updated dependencies.**
+
+
+[d08cd8a615277f6](https://github.com/noboomu/proteus/commit/d08cd8a615277f6) Joshua Bauer *2019-04-22 17:13:34*
+
+**Added fix for Service flexibility.**
+
+ * Made BaseService an interface that extends Module and Service.
+ * Added the class DefaultService that extends AbstractIdleService and implements the new BaseService interface.
+ * Bumped version.
+
+[14b3a54426bdb9f](https://github.com/noboomu/proteus/commit/14b3a54426bdb9f) Joshua Bauer *2019-04-10 19:24:15*
+
+**Bugfix: using getResponseHeaders() to send a response**
+
+
+[c362ca5b7411c8e](https://github.com/noboomu/proteus/commit/c362ca5b7411c8e) ratcash *2019-04-09 20:45:19*
+
+**Cleanup formating and imports.**
+
+
+[20cdfec6e485dfe](https://github.com/noboomu/proteus/commit/20cdfec6e485dfe) Joshua Bauer *2019-03-28 19:51:06*
+
+**Delete proteus.iml**
+
+
+[d3dafb8c8330502](https://github.com/noboomu/proteus/commit/d3dafb8c8330502) noboomu *2019-03-08 22:37:27*
+
+**Formatting changes.**
+
+
+[8dc66764213ce5d](https://github.com/noboomu/proteus/commit/8dc66764213ce5d) noboomu *2019-03-08 22:35:14*
+
+**Update README.md**
+
+
+[e131c968526528b](https://github.com/noboomu/proteus/commit/e131c968526528b) noboomu *2019-03-08 22:31:58*
+
+**PathParam tests.**
+
+
+[f32a7aac69b0037](https://github.com/noboomu/proteus/commit/f32a7aac69b0037) joshua bauer *2019-02-05 08:28:32*
+
+**Updated readme.**
+
+
+[582c9a72ee17761](https://github.com/noboomu/proteus/commit/582c9a72ee17761) joshua bauer *2019-01-09 23:37:24*
+
+**Updated logging and moved logo.**
+
+
+[8631d80a9382cea](https://github.com/noboomu/proteus/commit/8631d80a9382cea) joshua bauer *2019-01-09 23:25:44*
+
+**Modular breakout.**
+
+
+[1ae63afe5245b11](https://github.com/noboomu/proteus/commit/1ae63afe5245b11) joshua bauer *2019-01-09 23:22:30*
+
+
+## v0.3.7
+### No issue
+
+**Final 3.7 release. Last before modularization**
+
+
+[921bf84b018e7d6](https://github.com/noboomu/proteus/commit/921bf84b018e7d6) joshua bauer *2019-01-09 00:09:44*
+
+**Switch to eclipse jaxrs-api dependency.**
+
+
+[aeca1448201dae6](https://github.com/noboomu/proteus/commit/aeca1448201dae6) joshua bauer *2019-01-08 22:28:01*
+
+**Update README.md**
+
+
+[7a95dad8d9caee7](https://github.com/noboomu/proteus/commit/7a95dad8d9caee7) noboomu *2019-01-08 22:17:26*
+
+**Update README.md**
+
+
+[811a26559abf33f](https://github.com/noboomu/proteus/commit/811a26559abf33f) noboomu *2019-01-08 22:11:24*
+
+**Update README.md**
+
+
+[6dd5f5afaeee9b6](https://github.com/noboomu/proteus/commit/6dd5f5afaeee9b6) noboomu *2019-01-08 21:39:27*
+
+**General cleanup and update to Jackson version.**
+
+
+[29eafd116c58437](https://github.com/noboomu/proteus/commit/29eafd116c58437) joshua bauer *2019-01-05 00:58:27*
+
+**Update for Intellij.**
+
+
+[b9e83b8864e7d79](https://github.com/noboomu/proteus/commit/b9e83b8864e7d79) joshua bauer *2018-12-28 02:02:41*
+
+**Cleaner logging. Bake in blocking handler.**
+
+
+[a3f028427478a10](https://github.com/noboomu/proteus/commit/a3f028427478a10) joshua bauer *2018-12-28 02:00:45*
+
+**Improved documentation and cleaned up service code.**
+
+
+[d9bf9470b3aaf8e](https://github.com/noboomu/proteus/commit/d9bf9470b3aaf8e) joshua bauer *2018-12-20 21:54:39*
+
+**Update README.md**
+
+
+[b70de00f06d799f](https://github.com/noboomu/proteus/commit/b70de00f06d799f) noboomu *2018-12-20 21:22:51*
+
+**Update README.md**
+
+
+[6733c00a17c0877](https://github.com/noboomu/proteus/commit/6733c00a17c0877) noboomu *2018-12-20 21:21:57*
+
+**Update README.md**
+
+
+[731f9b711c94fe0](https://github.com/noboomu/proteus/commit/731f9b711c94fe0) noboomu *2018-12-20 21:21:07*
+
+**Update README.md**
+
+
+[71cdf5323f173ab](https://github.com/noboomu/proteus/commit/71cdf5323f173ab) noboomu *2018-12-20 21:20:23*
+
+**Improve blocking handler performance.**
+
+
+[d21cc6e898f374c](https://github.com/noboomu/proteus/commit/d21cc6e898f374c) joshua bauer *2018-12-19 23:24:56*
+
+**Use included JSON and YAML mappers in the Swagger service. Improves spec compatibility. Minor cleanup.**
+
+
+[cb6afd9b7c18f18](https://github.com/noboomu/proteus/commit/cb6afd9b7c18f18) joshua bauer *2018-12-12 20:25:52*
+
+**Update README.md**
+
+
+[fddfa1f104e57d0](https://github.com/noboomu/proteus/commit/fddfa1f104e57d0) noboomu *2018-12-10 19:57:17*
+
+
+## v0.3.6
+### No issue
+
+**Bump version.**
+
+
+[559a7d30f0a5a22](https://github.com/noboomu/proteus/commit/559a7d30f0a5a22) joshua bauer *2018-12-10 19:52:10*
+
+**Update README.md**
+
+
+[00ecc1355ad6ca0](https://github.com/noboomu/proteus/commit/00ecc1355ad6ca0) noboomu *2018-12-10 19:51:03*
+
+**Minimize Swagger/OpenAPI dependencies in handler generator.**
+
+
+[095b0aef63560fe](https://github.com/noboomu/proteus/commit/095b0aef63560fe) joshua bauer *2018-12-10 19:43:07*
+
+**Update README.md**
+
+
+[731e47e65a9e99c](https://github.com/noboomu/proteus/commit/731e47e65a9e99c) noboomu *2018-12-06 05:47:02*
+
+**Added redoc support for OpenAPI.**
+
+
+[fe05331edb0f180](https://github.com/noboomu/proteus/commit/fe05331edb0f180) joshua bauer *2018-12-06 05:45:15*
+
+**Use exchange dispatch method for blocking handlers.**
+
+
+[f0f42d0c48b682f](https://github.com/noboomu/proteus/commit/f0f42d0c48b682f) joshua bauer *2018-12-05 22:58:13*
+
+**Reduce logging.**
+
+
+[15422a09c1168e3](https://github.com/noboomu/proteus/commit/15422a09c1168e3) joshua bauer *2018-12-05 00:01:06*
+
+**More backward compatibility changes.**
+
+
+[d8148a7a91738df](https://github.com/noboomu/proteus/commit/d8148a7a91738df) joshua bauer *2018-12-04 23:58:49*
+
+**Support backward compatability with Swagger 2.**
+
+
+[5cdd18d779b4b67](https://github.com/noboomu/proteus/commit/5cdd18d779b4b67) joshua bauer *2018-12-04 23:03:11*
+
+**Additional Type Support and java.io.File Fix:**
+
+ * java.io.File
+ * java.time.Instant
+ * java.sql.Timestamp
+
+[8d6c9173ee4d14c](https://github.com/noboomu/proteus/commit/8d6c9173ee4d14c) joshua bauer *2018-12-04 21:30:51*
+
+**Update README.md**
+
+
+[3a1e61e0e767c0d](https://github.com/noboomu/proteus/commit/3a1e61e0e767c0d) noboomu *2018-12-04 09:31:12*
+
+**Cleanup imports.**
+
+
+[ff992158d9b72c2](https://github.com/noboomu/proteus/commit/ff992158d9b72c2) joshua bauer *2018-11-30 18:19:29*
+
+**Update README.md**
+
+
+[de23db495ba563c](https://github.com/noboomu/proteus/commit/de23db495ba563c) noboomu *2018-11-30 02:48:23*
+
+**Update README.md**
+
+ * Updated docs for OpenAPI 3.
+
+[bd08926910a144b](https://github.com/noboomu/proteus/commit/bd08926910a144b) noboomu *2018-11-30 02:42:28*
+
+**Security and Swagger Deprecation:**
+
+ * Add support for SecurityRequirement annotation.
+ * Remove some swagger 1.5 support.
+
+[2d9f8cea475e11a](https://github.com/noboomu/proteus/commit/2d9f8cea475e11a) joshua bauer *2018-11-30 02:29:29*
+
+**Reworked session attachment handler injection.**
+
+
+[4a0f6fae447f6c3](https://github.com/noboomu/proteus/commit/4a0f6fae447f6c3) joshua bauer *2018-11-29 22:01:53*
+
+**Code cleanup. Added support for injecting session attachment handler.**
+
+
+[ee3a38abb2a2965](https://github.com/noboomu/proteus/commit/ee3a38abb2a2965) joshua bauer *2018-11-29 21:35:34*
+
+**Update LICENSE**
+
+
+[dc184c2b47de7e5](https://github.com/noboomu/proteus/commit/dc184c2b47de7e5) noboomu *2018-11-21 01:27:42*
+
+**Update README.md**
+
+
+[097f15c85e0d4ac](https://github.com/noboomu/proteus/commit/097f15c85e0d4ac) noboomu *2018-11-21 01:26:52*
+
+
+## v0.3.5
+### No issue
+
+**Cleanup for 0.3.5 release.**
+
+
+[341bb46207f64c5](https://github.com/noboomu/proteus/commit/341bb46207f64c5) joshua bauer *2018-11-19 17:02:16*
+
+**Fix crazy guava guice...**
+
+
+[9c0d71b02d85578](https://github.com/noboomu/proteus/commit/9c0d71b02d85578) joshua bauer *2018-11-02 21:18:09*
+
+**Bumped version and upgraded dependencies.**
+
+
+[f84631e369afcf0](https://github.com/noboomu/proteus/commit/f84631e369afcf0) joshua bauer *2018-11-02 20:47:53*
+
+**Update config files.**
+
+
+[96aa1d5869723b6](https://github.com/noboomu/proteus/commit/96aa1d5869723b6) joshua bauer *2018-11-02 18:51:41*
+
+**Respect bufferSize and ioThread congiguration options.**
+
+
+[9fa586833f03492](https://github.com/noboomu/proteus/commit/9fa586833f03492) joshua bauer *2018-11-02 18:51:30*
+
+**Improved startup time.**
+
+
+[11b554f1abdee12](https://github.com/noboomu/proteus/commit/11b554f1abdee12) joshua bauer *2018-11-02 16:40:34*
+
+**Fix typo in error logging.**
+
+
+[45e6b8edcd27967](https://github.com/noboomu/proteus/commit/45e6b8edcd27967) joshua bauer *2018-10-25 21:10:12*
+
+**Improve logging.**
+
+
+[9eb660ecc8c5e75](https://github.com/noboomu/proteus/commit/9eb660ecc8c5e75) joshua bauer *2018-10-24 22:38:48*
+
+**Update README.md**
+
+
+[5a12c378e9e1f8b](https://github.com/noboomu/proteus/commit/5a12c378e9e1f8b) noboomu *2018-10-24 15:57:28*
+
+**Fix to allow compatibility with latest io.swagger.core.v3 snapshot.**
+
+
+[f310c46123d6b42](https://github.com/noboomu/proteus/commit/f310c46123d6b42) joshua bauer *2018-10-23 17:28:35*
+
+**Updated README.md with plugin info.**
+
+
+[359fc31ca3aa9e3](https://github.com/noboomu/proteus/commit/359fc31ca3aa9e3) joshua bauer *2018-10-23 00:44:43*
+
+**OpenAPI cleanup.**
+
+ * Moved server.oas to server.openapi since it was cleaner.
+ * Now serving openapi ui at /openapi.
+
+[7842f51a1578fe5](https://github.com/noboomu/proteus/commit/7842f51a1578fe5) joshua bauer *2018-10-23 00:17:43*
+
+**Fix for wrong YAML mapper.**
+
+
+[6473bfb69bb3e91](https://github.com/noboomu/proteus/commit/6473bfb69bb3e91) joshua bauer *2018-10-22 22:51:32*
+
+**Add default info to openapi config.**
+
+
+[5a7f99fcf4177f8](https://github.com/noboomu/proteus/commit/5a7f99fcf4177f8) joshua bauer *2018-10-22 22:44:01*
+
+**Updated README.md with OpenAPIService details.**
+
+
+[ab561e6732c57d3](https://github.com/noboomu/proteus/commit/ab561e6732c57d3) joshua bauer *2018-10-22 22:32:16*
+
+**Re-resolved required OpenAPI parameters.**
+
+
+[ec1e9229e577568](https://github.com/noboomu/proteus/commit/ec1e9229e577568) joshua bauer *2018-10-22 22:20:45*
+
+**Improve OpenAPI 3 method handling.**
+
+
+[34b5aa43fe4d28f](https://github.com/noboomu/proteus/commit/34b5aa43fe4d28f) joshua bauer *2018-10-22 20:50:12*
+
+**Properly handle empty responses in OpenAPI.**
+
+
+[b7d5cf62ae04d86](https://github.com/noboomu/proteus/commit/b7d5cf62ae04d86) joshua bauer *2018-10-22 18:26:25*
+
+**Update test logging levels.**
+
+
+[09a4f4c95ed85a4](https://github.com/noboomu/proteus/commit/09a4f4c95ed85a4) joshua bauer *2018-10-22 18:18:18*
+
+**Update conf files.**
+
+
+[a244de0554034db](https://github.com/noboomu/proteus/commit/a244de0554034db) joshua bauer *2018-10-22 18:17:39*
+
+**Use OAS objectMappers.**
+
+
+[709472ab14bfaef](https://github.com/noboomu/proteus/commit/709472ab14bfaef) joshua bauer *2018-10-22 18:17:27*
+
+**Cleanup OpenAPI reader logging.**
+
+
+[53e7b7aa3cafea6](https://github.com/noboomu/proteus/commit/53e7b7aa3cafea6) joshua bauer *2018-10-22 17:29:21*
+
+**Initial OpenAPI 3 support.**
+
+
+[f7fb6827e2ef195](https://github.com/noboomu/proteus/commit/f7fb6827e2ef195) joshua bauer *2018-10-22 17:27:25*
+
+**Added woodstox.**
+
+
+[61812c897810341](https://github.com/noboomu/proteus/commit/61812c897810341) joshua bauer *2018-10-18 21:00:37*
+
+**Support for 303 in response.**
+
+
+[f428f0a1b9c9a9f](https://github.com/noboomu/proteus/commit/f428f0a1b9c9a9f) joshua bauer *2018-10-17 06:37:27*
+
+**General Improvements**
+
+ * Services are bound to io.sinistral.proteus.services.BaseService.
+ * Redirects can change the request method.
+ * Cleaned up ServerResponse class.
+
+[f2d50912fd06078](https://github.com/noboomu/proteus/commit/f2d50912fd06078) joshua bauer *2018-10-16 21:54:07*
+
+**Added benchmark image.**
+
+
+[60bae20bcb0a8f3](https://github.com/noboomu/proteus/commit/60bae20bcb0a8f3) joshua bauer *2018-10-12 21:10:17*
+
+**Minor update**
+
+ * Updated README.
+ * Improved parameter naming support.
+ * Swapped out glassfish.
+
+[7fb05ec1224fa3b](https://github.com/noboomu/proteus/commit/7fb05ec1224fa3b) joshua bauer *2018-10-12 20:59:05*
+
+**Add more parameters. Bump version.**
+
+
+[67325869e4cdefc](https://github.com/noboomu/proteus/commit/67325869e4cdefc) joshua bauer *2018-10-09 17:09:06*
+
+**Update README.md**
+
+
+[d06d3e26c0254bf](https://github.com/noboomu/proteus/commit/d06d3e26c0254bf) noboomu *2018-10-05 05:34:38*
+
+
+## v0.3.3
+### No issue
+
+**Update ReadMe and prep for release.**
+
+
+[22eb49182491c51](https://github.com/noboomu/proteus/commit/22eb49182491c51) joshua bauer *2018-10-03 17:11:16*
+
+**Blocking and Debug Support**
+
+ * Support isBlocking when more than one consume type specified.
+ * Added @Debug annotation.
+
+[c4308a59c5f413b](https://github.com/noboomu/proteus/commit/c4308a59c5f413b) joshua bauer *2018-10-03 16:58:58*
+
+**Added Enum option to status set on ServerResponse.**
+
+
+[c28771d7757f44b](https://github.com/noboomu/proteus/commit/c28771d7757f44b) Sean Mollet *2018-10-02 21:16:02*
+
+**Set isBlocking true if the input type uses a handler that blocks.**
+
+
+[aadae7b6e609a39](https://github.com/noboomu/proteus/commit/aadae7b6e609a39) Sean Mollet *2018-10-02 17:34:23*
+
+**Update README.md**
+
+
+[52702bdb759ef11](https://github.com/noboomu/proteus/commit/52702bdb759ef11) noboomu *2018-09-27 20:52:20*
+
+**Update swagger.**
+
+
+[4c9694df68ab397](https://github.com/noboomu/proteus/commit/4c9694df68ab397) joshua bauer *2018-09-27 20:43:54*
+
+**Reduced package size. Improved fallback listeners and xml support.**
+
+
+[dc76b6cbcec90af](https://github.com/noboomu/proteus/commit/dc76b6cbcec90af) joshua bauer *2018-09-27 20:43:23*
+
+**Update README.md**
+
+
+[88364937079332d](https://github.com/noboomu/proteus/commit/88364937079332d) noboomu *2018-09-27 19:28:40*
+
+**Update README.md**
+
+
+[e359c50c2e916f5](https://github.com/noboomu/proteus/commit/e359c50c2e916f5) noboomu *2018-09-21 19:54:22*
+
+**Update README.md**
+
+
+[c2d78f3bfaa60a6](https://github.com/noboomu/proteus/commit/c2d78f3bfaa60a6) noboomu *2018-09-21 19:51:03*
+
+**Updated README.**
+
+
+[0160dff3291d1e6](https://github.com/noboomu/proteus/commit/0160dff3291d1e6) joshua bauer *2018-09-21 19:48:28*
+
+**Cleanup**
+
+ * Refactored test package names.
+ * Added yaml to swagger.
+ * Better text handling.
+
+[b25393a821da7f9](https://github.com/noboomu/proteus/commit/b25393a821da7f9) joshua bauer *2018-09-21 17:58:59*
+
+**Update README.md**
+
+
+[1936f3bbf16d94f](https://github.com/noboomu/proteus/commit/1936f3bbf16d94f) noboomu *2018-09-13 19:16:42*
+
+**Better config management.**
+
+
+[5dec8f004a6b95e](https://github.com/noboomu/proteus/commit/5dec8f004a6b95e) joshua bauer *2018-09-13 18:45:20*
+
+**Improve handler wrappers.**
+
+
+[1d2674cf1acc5d6](https://github.com/noboomu/proteus/commit/1d2674cf1acc5d6) joshua bauer *2018-09-10 17:28:47*
+
+
+## v0.3.2
+### No issue
+
+**Resolve conflicts.**
+
+
+[790346fea785bcd](https://github.com/noboomu/proteus/commit/790346fea785bcd) joshua bauer *2018-09-13 18:57:51*
+
+**Update README.md**
+
+
+[c0806736738da82](https://github.com/noboomu/proteus/commit/c0806736738da82) noboomu *2018-09-05 18:55:26*
+
+**Cleaned up handlers. Added support for javax.ws.rs.DefaultValue.**
+
+
+[9c44b86a36d15d1](https://github.com/noboomu/proteus/commit/9c44b86a36d15d1) joshua bauer *2018-08-09 17:41:49*
+
+**Cleanup error handling for byte handling.**
+
+
+[9662947a2c9b4ff](https://github.com/noboomu/proteus/commit/9662947a2c9b4ff) joshua bauer *2018-08-02 08:06:35*
+
+**Even smarter.**
+
+
+[d04e92eb09fb1cf](https://github.com/noboomu/proteus/commit/d04e92eb09fb1cf) joshua bauer *2018-08-02 07:56:48*
+
+**Let undertow handle the dirty work.**
+
+
+[23b1c46b46e2d6a](https://github.com/noboomu/proteus/commit/23b1c46b46e2d6a) joshua bauer *2018-08-02 07:55:11*
+
+**Added ServerException.**
+
+
+[20d00c86496fcb7](https://github.com/noboomu/proteus/commit/20d00c86496fcb7) joshua bauer *2018-07-26 01:00:54*
+
+**Better header handling.**
+
+
+[1d4ea6ad9e12ea3](https://github.com/noboomu/proteus/commit/1d4ea6ad9e12ea3) joshua bauer *2018-07-25 16:27:41*
+
+**Update swagger api key name.**
+
+
+[45e1a1cbe40e693](https://github.com/noboomu/proteus/commit/45e1a1cbe40e693) joshua bauer *2018-07-25 15:50:56*
+
+**Improve ServerResponse functionality.**
+
+
+[99c0171a880efc4](https://github.com/noboomu/proteus/commit/99c0171a880efc4) joshua bauer *2018-07-25 15:50:39*
+
+**More sensible handlers.**
+
+
+[dab04949fa01635](https://github.com/noboomu/proteus/commit/dab04949fa01635) joshua bauer *2018-07-24 22:19:03*
+
+**Improved response messaging.**
+
+
+[76b904f64ebe50b](https://github.com/noboomu/proteus/commit/76b904f64ebe50b) joshua bauer *2018-07-19 16:22:27*
+
+**More verbose error message.**
+
+
+[dbcb3baafd17d3d](https://github.com/noboomu/proteus/commit/dbcb3baafd17d3d) joshua bauer *2018-07-18 22:44:45*
+
+**Added permanent redirect support.**
+
+
+[ec2db6d1a496208](https://github.com/noboomu/proteus/commit/ec2db6d1a496208) joshua bauer *2018-07-18 22:21:22*
+
+**Add support for redirects.**
+
+
+[d03a796fb7f70b6](https://github.com/noboomu/proteus/commit/d03a796fb7f70b6) joshua bauer *2018-07-18 22:12:53*
+
+**Support response exception construction with strings.**
+
+
+[c8ac7ad22bedb36](https://github.com/noboomu/proteus/commit/c8ac7ad22bedb36) joshua bauer *2018-07-18 21:55:43*
+
+**Support for inner class model parsing.**
+
+
+[7c2cc52e1e0a750](https://github.com/noboomu/proteus/commit/7c2cc52e1e0a750) joshua bauer *2018-07-18 20:51:21*
+
+**Added support for sets in query parameters.**
+
+
+[05084d1f454484a](https://github.com/noboomu/proteus/commit/05084d1f454484a) joshua bauer *2018-07-18 00:03:54*
+
+**Reduce default log level.**
+
+
+[b2edceb39c66b1e](https://github.com/noboomu/proteus/commit/b2edceb39c66b1e) joshua bauer *2018-07-16 16:41:16*
+
+**Smarter predicates. Use BufferedRequestHandler.**
+
+
+[5931f6eb8ebe5c7](https://github.com/noboomu/proteus/commit/5931f6eb8ebe5c7) joshua bauer *2018-06-16 00:20:53*
+
+**Smarter body handling.**
+
+
+[b9bc9d9b90d7718](https://github.com/noboomu/proteus/commit/b9bc9d9b90d7718) joshua bauer *2018-06-15 04:13:02*
+
+**Better mime support.**
+
+
+[ce70db5ebe5d84e](https://github.com/noboomu/proteus/commit/ce70db5ebe5d84e) joshua bauer *2018-06-15 03:59:27*
+
+**Improved Swagger handling.**
+
+
+[114f14ad9aed246](https://github.com/noboomu/proteus/commit/114f14ad9aed246) joshua bauer *2018-06-15 03:36:21*
+
+**Minor fixes.**
+
+
+[0d70f8c75fbdd18](https://github.com/noboomu/proteus/commit/0d70f8c75fbdd18) joshua bauer *2018-06-15 01:40:42*
+
+**Support BeanParam annotation on collections.**
+
+
+[04f5d3422557c49](https://github.com/noboomu/proteus/commit/04f5d3422557c49) joshua bauer *2018-06-14 00:11:02*
+
+**Bumped version.**
+
+
+[87ec28995379426](https://github.com/noboomu/proteus/commit/87ec28995379426) joshua bauer *2018-04-10 23:56:46*
+
+**More tag sorting.**
+
+
+[66e47e5cbe651aa](https://github.com/noboomu/proteus/commit/66e47e5cbe651aa) joshua bauer *2018-04-10 23:54:13*
+
+**Sort swagger tags.**
+
+
+[23e81d52332c8e4](https://github.com/noboomu/proteus/commit/23e81d52332c8e4) joshua bauer *2018-04-10 23:47:18*
+
+**Allow for swagger host specification.**
+
+
+[35f9ec72e29981b](https://github.com/noboomu/proteus/commit/35f9ec72e29981b) joshua bauer *2018-04-10 22:31:30*
+
+**Updated links.**
+
+
+[9dd9a8c170a97ae](https://github.com/noboomu/proteus/commit/9dd9a8c170a97ae) joshua bauer *2018-03-23 16:41:58*
+
+**Updated readme with Blocking annotation info.**
+
+
+[c3d5c824fa7b380](https://github.com/noboomu/proteus/commit/c3d5c824fa7b380) joshua bauer *2018-03-23 16:35:06*
+
+**More status text cleanup.**
+
+
+[793f557e297b0a8](https://github.com/noboomu/proteus/commit/793f557e297b0a8) joshua bauer *2018-03-05 17:53:39*
+
+**Cleanup endpoint listing text.**
+
+
+[555ab30c77793ab](https://github.com/noboomu/proteus/commit/555ab30c77793ab) joshua bauer *2018-03-05 17:47:48*
+
+**Bump version.**
+
+
+[a7cd25489a36e09](https://github.com/noboomu/proteus/commit/a7cd25489a36e09) joshua bauer *2018-03-05 17:46:25*
+
+**Improve response and request error handling.**
+
+
+[cfc80d88be35695](https://github.com/noboomu/proteus/commit/cfc80d88be35695) joshua bauer *2018-03-05 17:45:56*
+
+**More swagger tweaks.**
+
+
+[bb84e8369c3ec99](https://github.com/noboomu/proteus/commit/bb84e8369c3ec99) joshua bauer *2018-02-27 01:19:50*
+
+
+## v0.3.0
+### No issue
+
+**Update Jackson version.**
+
+
+[91f6194f02a14c3](https://github.com/noboomu/proteus/commit/91f6194f02a14c3) joshua bauer *2018-07-13 16:41:59*
+
+**Swapped out Jsoniter with Jackson. Slightly slower but easier to use.**
+
+
+[26723e690681303](https://github.com/noboomu/proteus/commit/26723e690681303) joshua bauer *2018-07-13 16:30:53*
+
+
+## v0.1.8-alpha
+### No issue
+
+**Updated swagger css.**
+
+
+[83f977e167a53fb](https://github.com/noboomu/proteus/commit/83f977e167a53fb) joshua bauer *2018-02-23 22:40:52*
+
+**Updated swagger ui.**
+
+
+[6e86968b7d97b59](https://github.com/noboomu/proteus/commit/6e86968b7d97b59) joshua bauer *2018-02-22 23:33:08*
+
+**Minor improvements.**
+
+
+[445adb310298c90](https://github.com/noboomu/proteus/commit/445adb310298c90) joshua bauer *2018-02-22 23:27:21*
+
+**Updated ReadMe.**
+
+
+[6d5a852a4477b6c](https://github.com/noboomu/proteus/commit/6d5a852a4477b6c) joshua bauer *2018-02-15 11:27:51*
+
+**Updated README.**
+
+
+[57652197a9c43d8](https://github.com/noboomu/proteus/commit/57652197a9c43d8) joshua bauer *2017-11-29 02:12:27*
+
+**Updated README with Techempower results.**
+
+
+[83a111789400090](https://github.com/noboomu/proteus/commit/83a111789400090) joshua bauer *2017-11-27 15:27:56*
+
+**Improved tests so that port can be randomly assigned.**
+
+
+[af3695862a128c6](https://github.com/noboomu/proteus/commit/af3695862a128c6) joshua bauer *2017-09-27 20:40:08*
+
+**Removed default application.conf.**
+
+
+[d641ead14bc8d7a](https://github.com/noboomu/proteus/commit/d641ead14bc8d7a) joshua bauer *2017-09-27 20:08:23*
+
+**Update version. Add json routes.**
+
+
+[8de8ed6cf65c041](https://github.com/noboomu/proteus/commit/8de8ed6cf65c041) joshua bauer *2017-09-21 18:47:36*
+
+**Restore latest undertow version.**
+
+
+[9f834672064deda](https://github.com/noboomu/proteus/commit/9f834672064deda) joshua bauer *2017-09-21 17:59:16*
+
+**Undertow version change.**
+
+
+[1e3fc55c24534c3](https://github.com/noboomu/proteus/commit/1e3fc55c24534c3) joshua bauer *2017-09-20 21:34:17*
+
+**Change io threads.**
+
+
+[16123e0fa09ee98](https://github.com/noboomu/proteus/commit/16123e0fa09ee98) joshua bauer *2017-09-20 21:20:23*
+
+**Revert to earlier Undertow.**
+
+
+[5fbe8fe25052050](https://github.com/noboomu/proteus/commit/5fbe8fe25052050) joshua bauer *2017-09-20 21:19:05*
+
+**Reduced test asset size. Updated undertow.**
+
+
+[c1f5426cab88777](https://github.com/noboomu/proteus/commit/c1f5426cab88777) joshua bauer *2017-06-03 06:38:07*
+
+**Added Basic auth to Swagger support.**
+
+
+[359d60ffb895cac](https://github.com/noboomu/proteus/commit/359d60ffb895cac) joshua bauer *2017-05-23 15:26:02*
+
+**Fix for Swagger security definition name and key.**
+
+
+[a55b0d674ce4da2](https://github.com/noboomu/proteus/commit/a55b0d674ce4da2) joshua bauer *2017-05-23 14:22:12*
+
+**Clean up error handling in ServerResponse.**
+
+
+[94ece223a0a7f36](https://github.com/noboomu/proteus/commit/94ece223a0a7f36) joshua bauer *2017-05-23 14:15:06*
+
+**Add security to methods if not defined on controller class.**
+
+
+[ec4fc90cbc2868c](https://github.com/noboomu/proteus/commit/ec4fc90cbc2868c) joshua bauer *2017-05-23 00:37:01*
+
+**Improve Swagger css.**
+
+
+[f8dd4f5b6ce9319](https://github.com/noboomu/proteus/commit/f8dd4f5b6ce9319) joshua bauer *2017-05-23 00:35:19*
+
+**Generator now adds mapped SecurityDefinition wrapper.**
+
+
+[77e446d81786d14](https://github.com/noboomu/proteus/commit/77e446d81786d14) joshua bauer *2017-05-23 00:22:08*
+
+**Fix for Swagger apiKey.**
+
+ * Added improved ServerResponse exception handling.
+
+[7d97753822b80e7](https://github.com/noboomu/proteus/commit/7d97753822b80e7) joshua bauer *2017-05-22 23:40:08*
+
+**Add support for SecurityContexts.**
+
+ * Swagger apikey support.
+
+[b215afca10b8f77](https://github.com/noboomu/proteus/commit/b215afca10b8f77) joshua bauer *2017-05-22 22:52:16*
+
+**Improved test coverage.**
+
+ * Default to query parameter type if none is specified.
+ * Default to path parameter type if none is specified and this parameter
+ * name is in the path.
+
+[3a572135b76e25e](https://github.com/noboomu/proteus/commit/3a572135b76e25e) joshua bauer *2017-05-22 17:45:23*
+
+**Doc updates.**
+
+
+[f9a307ff6de57d2](https://github.com/noboomu/proteus/commit/f9a307ff6de57d2) joshua bauer *2017-05-19 21:10:45*
+
+**Doc updates.**
+
+
+[f3c86c479c066d0](https://github.com/noboomu/proteus/commit/f3c86c479c066d0) joshua bauer *2017-05-19 21:06:36*
+
+**Doc updates.**
+
+
+[f2a157d759f73db](https://github.com/noboomu/proteus/commit/f2a157d759f73db) joshua bauer *2017-05-19 21:05:50*
+
+**Doc updates.**
+
+
+[aad78b43537a232](https://github.com/noboomu/proteus/commit/aad78b43537a232) joshua bauer *2017-05-19 21:05:04*
+
+**Documentation formatting.**
+
+
+[d34a467b1838f9c](https://github.com/noboomu/proteus/commit/d34a467b1838f9c) joshua bauer *2017-05-19 20:54:24*
+
+**Swagger css improvements. Documentation updates.**
+
+
+[54420f84dfb122f](https://github.com/noboomu/proteus/commit/54420f84dfb122f) joshua bauer *2017-05-19 20:53:03*
+
+**Added favicon.**
+
+
+[c63d7ebcb9a5c9a](https://github.com/noboomu/proteus/commit/c63d7ebcb9a5c9a) joshua bauer *2017-05-15 21:13:34*
+
+**Added http2 support.**
+
+
+[d68dd30d89d9980](https://github.com/noboomu/proteus/commit/d68dd30d89d9980) joshua bauer *2017-05-15 20:40:10*
+
+**Added serverConfigurationFunction.**
+
+ * Allows access to the underlying Undertow.Builder if needed.
+
+[4052b6a124ceafc](https://github.com/noboomu/proteus/commit/4052b6a124ceafc) joshua bauer *2017-05-15 18:56:13*
+
+**Cleanup configuration. Added SSL support.**
+
+
+[8450d2c12b4bf12](https://github.com/noboomu/proteus/commit/8450d2c12b4bf12) joshua bauer *2017-05-15 18:49:49*
+
+**Added health check.**
+
+
+[d951c4381946e5a](https://github.com/noboomu/proteus/commit/d951c4381946e5a) joshua bauer *2017-05-13 01:40:27*
+
+**Documentation updates.**
+
+ * Added ReDoc to SwaggerService.
+ * Added default response code to Swagger spec.
+ * Removed excess logging in Reader.
+
+[4fdb70a30e20b4b](https://github.com/noboomu/proteus/commit/4fdb70a30e20b4b) joshua bauer *2017-05-12 23:42:10*
+
+**Added logo to README.**
+
+
+[5ba7480e6f1327f](https://github.com/noboomu/proteus/commit/5ba7480e6f1327f) joshua bauer *2017-05-12 15:11:46*
+
+**Added logo.**
+
+
+[3fd1dd3071fb128](https://github.com/noboomu/proteus/commit/3fd1dd3071fb128) joshua bauer *2017-05-12 15:08:30*
+
+**README formatting changes.**
+
+
+[16b4d5076201182](https://github.com/noboomu/proteus/commit/16b4d5076201182) joshua bauer *2017-05-11 01:30:01*
+
+**More README action.**
+
+
+[4ab177caa5d89a6](https://github.com/noboomu/proteus/commit/4ab177caa5d89a6) joshua bauer *2017-05-11 00:46:15*
+
+**Updates to README.**
+
+
+[caed7894bb8af46](https://github.com/noboomu/proteus/commit/caed7894bb8af46) joshua bauer *2017-05-11 00:43:15*
+
+**Fixed typos.**
+
+
+[fb265ef0fe258f7](https://github.com/noboomu/proteus/commit/fb265ef0fe258f7) joshua bauer *2017-05-11 00:40:27*
+
+**Added Service info to README.**
+
+
+[89e3c3b41fdc4fb](https://github.com/noboomu/proteus/commit/89e3c3b41fdc4fb) joshua bauer *2017-05-11 00:39:39*
+
+**Bumped SNAPSHOT version.**
+
+
+[62cde43b5fcf517](https://github.com/noboomu/proteus/commit/62cde43b5fcf517) joshua bauer *2017-05-11 00:29:14*
+
+**Deleted .idea directory.**
+
+
+[a02d12b686f31a1](https://github.com/noboomu/proteus/commit/a02d12b686f31a1) joshua bauer *2017-05-11 00:26:12*
+
+**Changed default port.**
+
+
+[a3414e175d65b8e](https://github.com/noboomu/proteus/commit/a3414e175d65b8e) joshua bauer *2017-05-11 00:25:45*
+
+**Changed default port.**
+
+
+[8686b569c836d87](https://github.com/noboomu/proteus/commit/8686b569c836d87) joshua bauer *2017-05-11 00:23:54*
+
+**Made the swagger resource prefix configurable.**
+
+
+[90251daf7e61d67](https://github.com/noboomu/proteus/commit/90251daf7e61d67) joshua bauer *2017-05-11 00:18:11*
+
+**Improved README. Handle duplicate end-point handler names.**
+
+
+[66381c2877ff2bc](https://github.com/noboomu/proteus/commit/66381c2877ff2bc) joshua bauer *2017-05-10 23:48:38*
+
+**Updates to README**
+
+
+[eab3c469ace142f](https://github.com/noboomu/proteus/commit/eab3c469ace142f) joshua bauer *2017-05-10 15:52:23*
+
+**Updates to README**
+
+
+[5e359ef432ca0ae](https://github.com/noboomu/proteus/commit/5e359ef432ca0ae) joshua bauer *2017-05-10 15:48:36*
+
+**Updates to README**
+
+
+[a9a81e79d327643](https://github.com/noboomu/proteus/commit/a9a81e79d327643) joshua bauer *2017-05-10 15:46:16*
+
+**Updates to README**
+
+
+[f7cd97b4bed877e](https://github.com/noboomu/proteus/commit/f7cd97b4bed877e) joshua bauer *2017-05-10 14:54:07*
+
+**Fix for README typo.**
+
+
+[205b71a8d50985d](https://github.com/noboomu/proteus/commit/205b71a8d50985d) joshua bauer *2017-05-10 14:48:18*
+
+**Added LICENSE**
+
+
+[d6c9f948b5677d8](https://github.com/noboomu/proteus/commit/d6c9f948b5677d8) noboomu *2017-05-08 22:40:38*
+
+**Updated javadocs.**
+
+
+[26049aeb9532d2e](https://github.com/noboomu/proteus/commit/26049aeb9532d2e) joshua bauer *2017-05-08 22:39:03*
+
+**Added README. Added Chain annotation to facilitate filters.**
+
+
+[084479ba771a340](https://github.com/noboomu/proteus/commit/084479ba771a340) joshua bauer *2017-05-08 17:47:28*
+
+**Cleanup warnings.**
+
+
+[c6ee584b1b35fd2](https://github.com/noboomu/proteus/commit/c6ee584b1b35fd2) joshua bauer *2017-05-05 21:27:01*
+
+**Removed MimeTypes. Cleaned up imports.**
+
+
+[a12aae64ca0e4dd](https://github.com/noboomu/proteus/commit/a12aae64ca0e4dd) joshua bauer *2017-05-05 21:21:06*
+
+**Better temp file handling.**
+
+
+[e411e40d4d00cf8](https://github.com/noboomu/proteus/commit/e411e40d4d00cf8) joshua bauer *2017-05-02 20:21:40*
+
+**Fix for dependencies.**
+
+
+[7d895a04b078150](https://github.com/noboomu/proteus/commit/7d895a04b078150) joshua bauer *2017-05-02 19:57:45*
+
+**Javadoc cleanup.**
+
+
+[b32ae924025573b](https://github.com/noboomu/proteus/commit/b32ae924025573b) joshua bauer *2017-05-02 19:52:00*
+
+
+## v0.1.1
+### No issue
+
+**Cleanup for Maven release.**
+
+
+[e591ab37c2ab9b6](https://github.com/noboomu/proteus/commit/e591ab37c2ab9b6) joshua bauer *2017-05-02 17:09:06*
+
+**Improved Swagger resource handling.**
+
+
+[c0b2d65cd196428](https://github.com/noboomu/proteus/commit/c0b2d65cd196428) joshua bauer *2017-05-02 16:43:46*
+
+**Bumped version.**
+
+
+[7280fa47969d26d](https://github.com/noboomu/proteus/commit/7280fa47969d26d) joshua bauer *2017-05-02 14:34:27*
+
+**Cleanup asset and swagger resource handling.**
+
+
+[cab38285bac71bb](https://github.com/noboomu/proteus/commit/cab38285bac71bb) joshua bauer *2017-05-02 01:51:16*
+
+**Cleanup config module.**
+
+
+[8821dc83df7beb8](https://github.com/noboomu/proteus/commit/8821dc83df7beb8) joshua bauer *2017-05-02 00:03:03*
+
+**Cleanup config module.**
+
+
+[b4fef657fc0daf5](https://github.com/noboomu/proteus/commit/b4fef657fc0daf5) joshua bauer *2017-05-02 00:02:28*
+
+**Test and controller cleanup.**
+
+
+[6bf802893a56afd](https://github.com/noboomu/proteus/commit/6bf802893a56afd) joshua bauer *2017-05-01 23:39:22*
+
+**Added upload / download tests for bytebuffer and path file processing.**
+
+
+[1b34eb10c1a052a](https://github.com/noboomu/proteus/commit/1b34eb10c1a052a) joshua bauer *2017-04-28 22:03:10*
+
+**Removed temporary components. Updated date parsing. Added tests.**
+
+
+[3c2eb5c50d78903](https://github.com/noboomu/proteus/commit/3c2eb5c50d78903) joshua bauer *2017-04-28 21:21:37*
+
+**Cleaned up swagger json.**
+
+
+[62677783f8d4bf4](https://github.com/noboomu/proteus/commit/62677783f8d4bf4) joshua bauer *2017-04-28 01:33:53*
+
+**A lot more cleanup. Experimented with Rocker. Cleaned up references to**
+
+ * JsonMapper.
+
+[c1259bf50932c6a](https://github.com/noboomu/proteus/commit/c1259bf50932c6a) joshua bauer *2017-04-28 01:24:50*
+
+**Cleanup, added test directories, use new serialization methods.**
+
+
+[d9f4cb3b10565c9](https://github.com/noboomu/proteus/commit/d9f4cb3b10565c9) joshua bauer *2017-04-27 20:07:49*
+
+**Server tuning.**
+
+
+[226674541c5a1c8](https://github.com/noboomu/proteus/commit/226674541c5a1c8) joshua bauer *2017-04-26 23:06:19*
+
+**Default settings optimization.**
+
+
+[4a1be18d43d6524](https://github.com/noboomu/proteus/commit/4a1be18d43d6524) joshua bauer *2017-04-26 19:01:22*
+
+**Reference and app config. Undertow options. Add modules.**
+
+
+[21ddc86c7ff6a7e](https://github.com/noboomu/proteus/commit/21ddc86c7ff6a7e) joshua bauer *2017-04-26 18:16:35*
+
+**Namespace changes.**
+
+
+[81e75ff52627f2c](https://github.com/noboomu/proteus/commit/81e75ff52627f2c) joshua bauer *2017-04-26 14:15:54*
+
+**Updated mvn exec. Made the root handler configurable from an HttpHandler**
+
+ * instance or injected from a class.
+
+[56fd11de43857d0](https://github.com/noboomu/proteus/commit/56fd11de43857d0) joshua bauer *2017-04-26 00:03:57*
+
+**Cleanup headers.**
+
+
+[ec049d60fce7000](https://github.com/noboomu/proteus/commit/ec049d60fce7000) joshua bauer *2017-04-25 22:14:43*
+
+**Migrate to new NS.**
+
+
+[c9a93dd4788346d](https://github.com/noboomu/proteus/commit/c9a93dd4788346d) joshua bauer *2017-04-25 15:06:59*
+
+**Whole lot of fixes and enhancements. Hopefully little to no performance**
+
+ * loss.
+
+[756d337c552070f](https://github.com/noboomu/proteus/commit/756d337c552070f) joshua bauer *2017-04-24 06:09:09*
+
+**Cleanup modules.**
+
+
+[ba639d7a92b76ac](https://github.com/noboomu/proteus/commit/ba639d7a92b76ac) joshua bauer *2017-04-12 22:22:14*
+
+**Updated default error handling.**
+
+
+[7c38f46688e7d9b](https://github.com/noboomu/proteus/commit/7c38f46688e7d9b) joshua bauer *2017-04-12 22:15:49*
+
+**XML handling.**
+
+
+[8362b501c563e3e](https://github.com/noboomu/proteus/commit/8362b501c563e3e) joshua bauer *2017-04-12 22:15:28*
+
+**Minor updates.**
+
+
+[d610a1791e26c1d](https://github.com/noboomu/proteus/commit/d610a1791e26c1d) joshua bauer *2017-04-12 04:01:14*
+
+**Cleanup ServerResponse interface.**
+
+
+[9e6a02dd83a066f](https://github.com/noboomu/proteus/commit/9e6a02dd83a066f) joshua bauer *2017-04-11 14:54:13*
+
+**Improve ServerResponse performance.**
+
+
+[a0c5cd596378cf8](https://github.com/noboomu/proteus/commit/a0c5cd596378cf8) joshua bauer *2017-04-11 14:42:29*
+
+**Completed initial ServerResponse implementation.**
+
+
+[501c4d4f1c67a20](https://github.com/noboomu/proteus/commit/501c4d4f1c67a20) joshua bauer *2017-04-10 20:12:39*
+
+**Added more dependencies. Renamed endpointInfo. Added bytes benchmark.**
+
+
+[d69097b03a703cf](https://github.com/noboomu/proteus/commit/d69097b03a703cf) joshua bauer *2017-04-10 19:17:36*
+
+**Override param arg name with annotation value.**
+
+
+[6d30450221406ad](https://github.com/noboomu/proteus/commit/6d30450221406ad) joshua bauer *2017-04-07 23:53:44*
+
+**Date and list working.**
+
+
+[3f0ef60a473b54c](https://github.com/noboomu/proteus/commit/3f0ef60a473b54c) joshua bauer *2017-04-07 23:35:52*
+
+**Revamped folders.**
+
+
+[dac0df4fc2e86bd](https://github.com/noboomu/proteus/commit/dac0df4fc2e86bd) joshua bauer *2017-04-07 23:13:56*
+
+**Major reorg. Fix for logback.**
+
+
+[4a47da26fb57335](https://github.com/noboomu/proteus/commit/4a47da26fb57335) joshua bauer *2017-04-07 01:30:50*
+
+**Cleanup application.**
+
+
+[6c3b8d666e4085d](https://github.com/noboomu/proteus/commit/6c3b8d666e4085d) joshua bauer *2017-04-06 01:15:04*
+
+**Swagger functioning as expected.**
+
+
+[e739eaeae6d55c3](https://github.com/noboomu/proteus/commit/e739eaeae6d55c3) joshua bauer *2017-04-05 00:59:04*
+
+**Generation and compilation functional.**
+
+
+[d2838dc1d95b21b](https://github.com/noboomu/proteus/commit/d2838dc1d95b21b) joshua bauer *2017-04-03 22:21:34*
+
+**Generation updated.**
+
+
+[714520aafdd070a](https://github.com/noboomu/proteus/commit/714520aafdd070a) joshua bauer *2017-04-03 06:23:52*
+
+**Generator progress.**
+
+
+[3a47fe04ef05292](https://github.com/noboomu/proteus/commit/3a47fe04ef05292) joshua bauer *2017-04-02 00:29:25*
+
+**~70k posts/sec**
+
+
+[6c0ae6cb4017ffe](https://github.com/noboomu/proteus/commit/6c0ae6cb4017ffe) joshua bauer *2017-03-31 23:58:35*
+
+
diff --git a/core/pom.xml b/core/pom.xml
index b47504c..8cd27a0 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -35,6 +35,59 @@
+
+
+ se.bjurr.gitchangelog
+ git-changelog-maven-plugin
+ ${changelog.version}
+
+
+ GenerateGitChangelog
+ generate-sources
+
+ git-changelog
+
+
+
+
+
+
+
+
+
+
org.apache.maven.plugins
maven-jar-plugin
diff --git a/core/src/main/java/io/sinistral/proteus/wrappers/JsonViewWrapper.java b/core/src/main/java/io/sinistral/proteus/wrappers/JsonViewWrapper.java
index deb8968..f02684d 100644
--- a/core/src/main/java/io/sinistral/proteus/wrappers/JsonViewWrapper.java
+++ b/core/src/main/java/io/sinistral/proteus/wrappers/JsonViewWrapper.java
@@ -4,6 +4,8 @@
import io.undertow.server.HandlerWrapper;
import io.undertow.server.HttpHandler;
import io.undertow.util.AttachmentKey;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import javax.inject.Named;
import java.util.Deque;
@@ -15,6 +17,8 @@ public class JsonViewWrapper implements HandlerWrapper
{
public static AttachmentKey JSON_VIEW_KEY = AttachmentKey.create(Class.class);
+ private static final Logger logger = LoggerFactory.getLogger(JsonViewWrapper.class.getName());
+
@Named("jackson.jsonView.className")
@Inject(optional = true)
private static String VIEW_CLASS_NAME;
@@ -44,7 +48,7 @@ public JsonViewWrapper()
}
} catch (Exception e) {
- e.printStackTrace();
+ logger.error("Error processing JsonView",e);
}
}
}
@@ -64,6 +68,7 @@ public HttpHandler wrap(HttpHandler handler)
Class viewClass = CLASS_MAP.get(cn);
exchange.putAttachment(JSON_VIEW_KEY, viewClass);
+
});
}
diff --git a/core/src/test/resources/application.conf b/core/src/test/resources/application.conf
index c912960..3a58d9e 100644
--- a/core/src/test/resources/application.conf
+++ b/core/src/test/resources/application.conf
@@ -56,7 +56,16 @@ assets {
test.wrapper.value = "testValue"
+jackson {
+ jsonView = {
+ # a class that provides a mapping from the JsonView query parameter values to JsonView classes
+ className = null
+ # the name of the query parameter to use for JsonView class lookup
+ queryParameterName = "context"
+ }
+
+}
undertow
{
diff --git a/openapi/src/main/java/io/sinistral/proteus/openapi/jaxrs2/Reader.java b/openapi/src/main/java/io/sinistral/proteus/openapi/jaxrs2/Reader.java
index 69522a4..f2216c6 100644
--- a/openapi/src/main/java/io/sinistral/proteus/openapi/jaxrs2/Reader.java
+++ b/openapi/src/main/java/io/sinistral/proteus/openapi/jaxrs2/Reader.java
@@ -13,8 +13,10 @@
import com.fasterxml.jackson.databind.introspect.AnnotatedMethod;
import com.fasterxml.jackson.databind.introspect.AnnotatedParameter;
import com.fasterxml.jackson.databind.type.TypeFactory;
+import io.sinistral.proteus.annotations.Chain;
import io.sinistral.proteus.server.ServerRequest;
import io.sinistral.proteus.server.ServerResponse;
+import io.sinistral.proteus.wrappers.JsonViewWrapper;
import io.swagger.v3.core.converter.AnnotatedType;
import io.swagger.v3.core.converter.ModelConverters;
import io.swagger.v3.core.converter.ResolvedSchema;
@@ -45,6 +47,7 @@
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import io.swagger.v3.oas.models.tags.Tag;
+import io.undertow.server.HandlerWrapper;
import io.undertow.server.HttpServerExchange;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
@@ -88,6 +91,8 @@ public class Reader extends io.swagger.v3.jaxrs2.Reader
private static final String HEAD_METHOD = "head";
private static final String OPTIONS_METHOD = "options";
+ private Schema stringSchema;
+
public Reader()
{
// Json.mapper().addMixIn(ServerRequest.class, ServerRequestMixIn.class);
@@ -96,6 +101,8 @@ public Reader()
paths = new Paths();
openApiTags = new LinkedHashSet<>();
components = new Components();
+ stringSchema = new Schema();
+ stringSchema.setType("string");
}
@@ -451,7 +458,7 @@ public OpenAPI read(Class> cls,
globalParameters.addAll(ReaderUtils.collectFieldParameters(cls, components, classConsumes, null));
// iterate class methods
- Method methods[] = cls.getMethods();
+ Method[] methods = cls.getMethods();
for (Method method : methods)
{
if (isOperationHidden(method))
@@ -701,6 +708,53 @@ else if (StringUtils.isBlank(httpMethod) && subResource != null)
}
}
+ boolean hasJsonWrapper = false;
+
+ if(method.isAnnotationPresent(Chain.class))
+ {
+ Chain chainAnnotation = method.getAnnotation(Chain.class);
+
+ Class extends HandlerWrapper>[] wrappers = chainAnnotation.value();
+
+ for(Class extends HandlerWrapper> wrapper : wrappers)
+ {
+ if(wrapper.equals(JsonViewWrapper.class))
+ {
+ LOGGER.debug("Found json wrapper class on method");
+ hasJsonWrapper = true;
+ }
+ }
+ } else if(cls.isAnnotationPresent(Chain.class))
+ {
+ Chain chainAnnotation = cls.getAnnotation(Chain.class);
+
+ Class extends HandlerWrapper>[] wrappers = chainAnnotation.value();
+
+ for(Class extends HandlerWrapper> wrapper : wrappers)
+ {
+ if(wrapper.equals(JsonViewWrapper.class))
+ {
+ LOGGER.debug("Found json wrapper class on class");
+ hasJsonWrapper = true;
+ }
+ }
+ }
+
+ LOGGER.debug("hasJsonWrapper");
+
+ if(hasJsonWrapper && config.getUserDefinedOptions().containsKey("jsonViewQueryParameterName"))
+ {
+ Parameter contextParameter = new Parameter();
+ contextParameter.description("JsonView class")
+ .allowEmptyValue(true)
+ .required(false)
+ .name(config.getUserDefinedOptions().get("jsonViewQueryParameterName").toString())
+ .in("query")
+ .schema(stringSchema);
+
+ operation.addParametersItem(contextParameter);
+ }
+
if (subResource != null && !scannedResources.contains(subResource))
{
scannedResources.add(subResource);
@@ -728,6 +782,7 @@ else if (StringUtils.isBlank(httpMethod) && subResource != null)
}
PathItem pathItemObject;
+
if (openAPI.getPaths() != null && openAPI.getPaths().get(operationPath) != null)
{
pathItemObject = openAPI.getPaths().get(operationPath);
@@ -741,6 +796,7 @@ else if (StringUtils.isBlank(httpMethod) && subResource != null)
{
continue;
}
+
setPathItemOperation(pathItemObject, httpMethod, operation);
paths.addPathItem(operationPath, pathItemObject);
diff --git a/openapi/src/main/java/io/sinistral/proteus/openapi/services/OpenAPIService.java b/openapi/src/main/java/io/sinistral/proteus/openapi/services/OpenAPIService.java
index 6fa5c5a..f7c3763 100644
--- a/openapi/src/main/java/io/sinistral/proteus/openapi/services/OpenAPIService.java
+++ b/openapi/src/main/java/io/sinistral/proteus/openapi/services/OpenAPIService.java
@@ -50,11 +50,7 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.function.Supplier;
import java.util.jar.JarFile;
@@ -123,10 +119,16 @@ public class OpenAPIService extends DefaultService implements Supplier> registeredControllers;
+ @Inject(optional = true)
+ @Named("jackson.jsonView.queryParameterName")
+ protected String jsonViewQueryParameterName;
+
@Inject
@Named("registeredHandlerWrappers")
protected Map registeredHandlerWrappers;
+
+
public OpenAPIService()
{
mapper = Json.mapper();
@@ -255,6 +257,16 @@ protected void generateSpec() throws Exception
SwaggerConfiguration config = new SwaggerConfiguration().resourceClasses(classes.stream().map(Class::getName).collect(Collectors.toSet())).openAPI(openApi);
+ if(jsonViewQueryParameterName != null) {
+
+ if(config.getUserDefinedOptions() == null)
+ {
+ config.setUserDefinedOptions(new HashMap<>());
+ }
+
+ config.getUserDefinedOptions().put("jsonViewQueryParameterName", jsonViewQueryParameterName);
+ }
+
Set modelConverterClasses = new HashSet<>();
modelConverterClasses.add(ServerModelResolver.class.getName());
diff --git a/openapi/src/test/java/io/sinistral/proteus/openapi/test/controllers/OpenAPITests.java b/openapi/src/test/java/io/sinistral/proteus/openapi/test/controllers/OpenAPITests.java
index 4796233..2e06e9a 100644
--- a/openapi/src/test/java/io/sinistral/proteus/openapi/test/controllers/OpenAPITests.java
+++ b/openapi/src/test/java/io/sinistral/proteus/openapi/test/controllers/OpenAPITests.java
@@ -9,9 +9,11 @@
import com.google.inject.Inject;
import com.google.inject.Singleton;
import io.sinistral.proteus.annotations.Blocking;
+import io.sinistral.proteus.annotations.Chain;
import io.sinistral.proteus.openapi.test.models.Pojo;
import io.sinistral.proteus.server.ServerRequest;
import io.sinistral.proteus.server.ServerResponse;
+import io.sinistral.proteus.wrappers.JsonViewWrapper;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -305,4 +307,17 @@ public ServerResponse
+
+