Extensible and flexible API Management. Add your own functionality with simple Java plugins.
All notable changes to Apiman will be documented here (as of Apiman 3).
List.of
might be used with a null
element which results in a NPE and metrics not rendering with certain configurations. By Marc Savy (@msavy).allowed-issuers
in your Gateway API Keycloak Authentication config.
This better supports situations where your Keycloak server returns multiple different issuers, for example for internal vs external domains, Docker, K8s, etc. By Marc Savy (@msavy).allowed-issuers
in the Vert.x
Gateway API authentication configuration to allow both internal and external issuers. By Marc Savy (@msavy)./system/status
endpoint without auth. This allows health checks without needing to pass around auth credentials and/or relying on 4xx errors. By Marc Savy (@msavy).null
/empty path elements in Keycloak discovery URI.
If your Vert.x Gateway API was unable to speak to Keycloak because it had an unexpected null
in the URI, this should fix it. By Marc Savy (@msavy).hibernate.auto_quote_keyword=true
— in WildFly you can put this into the properties
section of standalone-apiman.xml
. By Marc Savy (@msavy).write-to
option. To facilitate scrape-based metrics patterns, this commit allows Apiman’s ES metrics to be written to a log file as JSON via whichever logging framework you are using (asynchronously). You can set any combination of remote
(ES server) or/and log
(local). By Marc Savy (@msavy)./openapi.json
or /openapi.yml
. For example, http://localhost:8080/apiman/openapi.json. By Marc Savy (@msavy).getAllowedIssuers
check was mistakenly inverted. By ronimhd.Full Changelog: 3.0.0.Final...3.1.0.Final
A huge thanks to every company that has worked with Apiman’s main developer via consulting, support, sponsoring features, or other means. Without financial support, Apiman open source will not continue to be developed.
Particular thanks go to the team at Scheer PAS who sponsored a considerable amount of the work that is in the 3.0.0.Final release.
apiEditor
permission will receive an in-browser notification and email notification. In-browser notifications can be seen by pressing the bell in the top-right corner of the screen. Notifications can be disabled entirely in apiman.properties
. By Marc Savy (@msavy).apiman.properties
. By Marc Savy (@msavy).ApimanLoggerFactory.getLogger(YourClazz.class)
. The previous approach tried to be very flexible, but ended up mostly being inconvenient and clumsy. An appropriate logger implementation is selected for each platform Apiman ships on, rather than leaving it for the user. By Marc Savy (@msavy).io.apiman:apiman-parent:<version>
). This contains managed versions of all Apiman Maven dependencies, which may be useful for plugin authors. By Marc Savy (@msavy).apiman.properties
). Not rolled out everywhere, but provides a more unified experience with much better error messages and type validation. By Marc Savy (@msavy).http://localhost:8080/portal
, and you can customise the portal by editing its various configuration options in standalone/configuration/portal/assets/
. By Marc Savy (@msavy).***fastbuild.sh***
script to build apiman as fast as possible in parallel using mvnd
or mvnw
. It skips test and javadoc. By Marc Savy (@msavy).$ocLazyLoad
, this avoids the Apiman Manager UI initial download being larger. By Marc Savy (@msavy).--build-arg
s for most variables, such as Apiman’s version, JDBC driver versions, etc. By Marc Savy (@msavy).create or replace procedure
syntax we use, and the 9.x lineage is not supported upstream anymore.ESStorage
and associated code. See: AEP 2: Drop Elasticsearch as Manager API database in Apiman 3 (keep for metrics, gateway, etc). By Marc Savy (@msavy).apiman.properties
. By Marc Savy (@msavy) in https://github.com/apiman/apiman/pull/2012
RestExceptionMapper
actually prints stack trace. By Marc Savy (@msavy)
#equals
and #hashCode
By Marc Savy (@msavy)
Full Changelog: 2.2.3.Final...3.0.0.Final
Snapshot 3.2.1-SNAPSHOT. This is not a production-grade release!
Each time a snapshot of this version is built in CI, the artifacts in this release will be replaced. The date you see on the release itself may therefore be misleading.
You can refer to CHANGELOG.adoc in the attached release files if you want to see the changes when the snapshot was created.
All notable changes to Apiman will be documented here (as of Apiman 3).
allowed-issuers
in your Gateway API Keycloak Authentication config.
This better supports situations where your Keycloak server returns multiple different issuers, for example for internal
vs external domains, Docker, K8s, etc. By Marc Savy (@msavy).allowed-issuers
in the Vert.x
Gateway API authentication configuration to allow both internal and external issuers. By Marc Savy (@msavy)./system/status
endpoint without auth. This allows health checks without needing to pass around auth credentials and/or relying on 4xx errors. By Marc Savy (@msavy).null
/empty path elements in Keycloak discovery URI.
If your Vert.x Gateway API was unable to speak to Keycloak because it had an unexpected null
in the URI, this should fix it. By Marc Savy (@msavy).hibernate.auto_quote_keyword=true
— in WildFly you can put this into the properties
section of standalone-apiman.xml
. By Marc Savy (@msavy).write-to
option. To facilitate scrape-based metrics patterns, this commit allows Apiman’s ES metrics to be written to a log file as JSON via whichever logging framework you are using (asynchronously). You can set any combination of remote
(ES server) or/and log
(local). By Marc Savy (@msavy)./openapi.json
or /openapi.yml
. For example, http://localhost:8080/apiman/openapi.json. By Marc Savy (@msavy).getAllowedIssuers
check was mistakenly inverted. By ronimhd.Full Changelog: 3.0.0.Final...3.1.0.Final
A huge thanks to every company that has worked with Apiman’s main developer via consulting, support, sponsoring features, or other means. Without financial support, Apiman open source will not continue to be developed.
Particular thanks go to the team at Scheer PAS who sponsored a considerable amount of the work that is in the 3.0.0.Final release.
apiEditor
permission will receive an in-browser notification and email notification. In-browser notifications can be seen by pressing the bell in the top-right corner of the screen. Notifications can be disabled entirely in apiman.properties
. By Marc Savy (@msavy).apiman.properties
. By Marc Savy (@msavy).ApimanLoggerFactory.getLogger(YourClazz.class)
. The previous approach tried to be very flexible, but ended up mostly being inconvenient and clumsy. An appropriate logger implementation is selected for each platform Apiman ships on, rather than leaving it for the user. By Marc Savy (@msavy).io.apiman:apiman-parent:<version>
). This contains managed versions of all Apiman Maven dependencies, which may be useful for plugin authors. By Marc Savy (@msavy).apiman.properties
). Not rolled out everywhere, but provides a more unified experience with much better error messages and type validation. By Marc Savy (@msavy).http://localhost:8080/portal
, and you can customise the portal by editing its various configuration options in standalone/configuration/portal/assets/
. By Marc Savy (@msavy).***fastbuild.sh***
script to build apiman as fast as possible in parallel using mvnd
or mvnw
. It skips test and javadoc. By Marc Savy (@msavy).$ocLazyLoad
, this avoids the Apiman Manager UI initial download being larger. By Marc Savy (@msavy).--build-arg
s for most variables, such as Apiman’s version, JDBC driver versions, etc. By Marc Savy (@msavy).create or replace procedure
syntax we use, and the 9.x lineage is not supported upstream anymore.ESStorage
and associated code. See: AEP 2: Drop Elasticsearch as Manager API database in Apiman 3 (keep for metrics, gateway, etc). By Marc Savy (@msavy).apiman.properties
. By Marc Savy (@msavy) in https://github.com/apiman/apiman/pull/2012
RestExceptionMapper
actually prints stack trace. By Marc Savy (@msavy)
#equals
and #hashCode
By Marc Savy (@msavy)
Full Changelog: 2.2.3.Final...3.0.0.Final
All notable changes to Apiman will be documented here (as of Apiman 3).
allowed-issuers
in your Gateway API Keycloak Authentication config.
This better supports situations where your Keycloak server returns multiple different issuers, for example for internal
vs external domains, Docker, K8s, etc. By Marc Savy (@msavy).allowed-issuers
in the Vert.x
Gateway API authentication configuration to allow both internal and external issuers. By Marc Savy (@msavy)./system/status
endpoint without auth. This allows health checks without needing to pass around auth credentials and/or relying on 4xx errors. By Marc Savy (@msavy).null
/empty path elements in Keycloak discovery URI.
If your Vert.x Gateway API was unable to speak to Keycloak because it had an unexpected null
in the URI, this should fix it. By Marc Savy (@msavy).hibernate.auto_quote_keyword=true
— in WildFly you can put this into the properties
section of standalone-apiman.xml
. By Marc Savy (@msavy).write-to
option. To facilitate scrape-based metrics patterns, this commit allows Apiman’s ES metrics to be written to a log file as JSON via whichever logging framework you are using (asynchronously). You can set any combination of remote
(ES server) or/and log
(local). By Marc Savy (@msavy)./openapi.json
or /openapi.yml
. For example, http://localhost:8080/apiman/openapi.json. By Marc Savy (@msavy).getAllowedIssuers
check was mistakenly inverted. By ronimhd.Full Changelog: 3.0.0.Final...3.1.0.Final
A huge thanks to every company that has worked with Apiman’s main developer via consulting, support, sponsoring features, or other means. Without financial support, Apiman open source will not continue to be developed.
Particular thanks go to the team at Scheer PAS who sponsored a considerable amount of the work that is in the 3.0.0.Final release.
apiEditor
permission will receive an in-browser notification and email notification. In-browser notifications can be seen by pressing the bell in the top-right corner of the screen. Notifications can be disabled entirely in apiman.properties
. By Marc Savy (@msavy).apiman.properties
. By Marc Savy (@msavy).ApimanLoggerFactory.getLogger(YourClazz.class)
. The previous approach tried to be very flexible, but ended up mostly being inconvenient and clumsy. An appropriate logger implementation is selected for each platform Apiman ships on, rather than leaving it for the user. By Marc Savy (@msavy).io.apiman:apiman-parent:<version>
). This contains managed versions of all Apiman Maven dependencies, which may be useful for plugin authors. By Marc Savy (@msavy).apiman.properties
). Not rolled out everywhere, but provides a more unified experience with much better error messages and type validation. By Marc Savy (@msavy).http://localhost:8080/portal
, and you can customise the portal by editing its various configuration options in standalone/configuration/portal/assets/
. By Marc Savy (@msavy).***fastbuild.sh***
script to build apiman as fast as possible in parallel using mvnd
or mvnw
. It skips test and javadoc. By Marc Savy (@msavy).$ocLazyLoad
, this avoids the Apiman Manager UI initial download being larger. By Marc Savy (@msavy).--build-arg
s for most variables, such as Apiman’s version, JDBC driver versions, etc. By Marc Savy (@msavy).create or replace procedure
syntax we use, and the 9.x lineage is not supported upstream anymore.ESStorage
and associated code. See: AEP 2: Drop Elasticsearch as Manager API database in Apiman 3 (keep for metrics, gateway, etc). By Marc Savy (@msavy).apiman.properties
. By Marc Savy (@msavy) in https://github.com/apiman/apiman/pull/2012
RestExceptionMapper
actually prints stack trace. By Marc Savy (@msavy)
#equals
and #hashCode
By Marc Savy (@msavy)
Full Changelog: 2.2.3.Final...3.0.0.Final
Snapshot 3.2.0-SNAPSHOT. This is not a production-grade release!
Each time a snapshot of this version is built in CI, the artifacts in this release will be replaced. The date you see on the release itself may therefore be misleading.
You can refer to CHANGELOG.adoc in the attached release files if you want to see the changes when the snapshot was created.
All notable changes to Apiman will be documented here (as of Apiman 3).
write-to
option. To facilitate scrape-based metrics patterns, this commit allows Apiman’s ES metrics to be written to a log file as JSON via whichever logging framework you are using (asynchronously). You can set any combination of remote
(ES server) or/and log
(local). By Marc Savy (@msavy)./openapi.json
or /openapi.yml
. For example, http://localhost:8080/apiman/openapi.json. By Marc Savy (@msavy).getAllowedIssuers
check was mistakenly inverted. By ronimhd.Full Changelog: 3.0.0.Final...3.1.0.Final
A huge thanks to every company that has worked with Apiman’s main developer via consulting, support, sponsoring features, or other means. Without financial support, Apiman open source will not continue to be developed.
Particular thanks go to the team at Scheer PAS who sponsored a considerable amount of the work that is in the 3.0.0.Final release.
apiEditor
permission will receive an in-browser notification and email notification. In-browser notifications can be seen by pressing the bell in the top-right corner of the screen. Notifications can be disabled entirely in apiman.properties
. By Marc Savy (@msavy).apiman.properties
. By Marc Savy (@msavy).ApimanLoggerFactory.getLogger(YourClazz.class)
. The previous approach tried to be very flexible, but ended up mostly being inconvenient and clumsy. An appropriate logger implementation is selected for each platform Apiman ships on, rather than leaving it for the user. By Marc Savy (@msavy).io.apiman:apiman-parent:<version>
). This contains managed versions of all Apiman Maven dependencies, which may be useful for plugin authors. By Marc Savy (@msavy).apiman.properties
). Not rolled out everywhere, but provides a more unified experience with much better error messages and type validation. By Marc Savy (@msavy).http://localhost:8080/portal
, and you can customise the portal by editing its various configuration options in standalone/configuration/portal/assets/
. By Marc Savy (@msavy).***fastbuild.sh***
script to build apiman as fast as possible in parallel using mvnd
or mvnw
. It skips test and javadoc. By Marc Savy (@msavy).$ocLazyLoad
, this avoids the Apiman Manager UI initial download being larger. By Marc Savy (@msavy).--build-arg
s for most variables, such as Apiman’s version, JDBC driver versions, etc. By Marc Savy (@msavy).create or replace procedure
syntax we use, and the 9.x lineage is not supported upstream anymore.ESStorage
and associated code. See: AEP 2: Drop Elasticsearch as Manager API database in Apiman 3 (keep for metrics, gateway, etc). By Marc Savy (@msavy).apiman.properties
. By Marc Savy (@msavy) in https://github.com/apiman/apiman/pull/2012
RestExceptionMapper
actually prints stack trace. By Marc Savy (@msavy)
#equals
and #hashCode
By Marc Savy (@msavy)
Full Changelog: 2.2.3.Final...3.0.0.Final
All notable changes to Apiman will be documented here (as of Apiman 3).
write-to
option. To facilitate scrape-based metrics patterns, this commit allows Apiman’s ES metrics to be written to a log file as JSON via whichever logging framework you are using (asynchronously). You can set any combination of remote
(ES server) or/and log
(local). By Marc Savy (@msavy)./openapi.json
or /openapi.yml
. For example, http://localhost:8080/apiman/openapi.json. By Marc Savy (@msavy).getAllowedIssuers
check was mistakenly inverted. By ronimhd.Full Changelog: 3.0.0.Final...3.1.0.Final
A huge thanks to every company that has worked with Apiman’s main developer via consulting, support, sponsoring features, or other means. Without financial support, Apiman open source will not continue to be developed.
Particular thanks go to the team at Scheer PAS who sponsored a considerable amount of the work that is in the 3.0.0.Final release.
apiEditor
permission will receive an in-browser notification and email notification. In-browser notifications can be seen by pressing the bell in the top-right corner of the screen. Notifications can be disabled entirely in apiman.properties
. By Marc Savy (@msavy).apiman.properties
. By Marc Savy (@msavy).ApimanLoggerFactory.getLogger(YourClazz.class)
. The previous approach tried to be very flexible, but ended up mostly being inconvenient and clumsy. An appropriate logger implementation is selected for each platform Apiman ships on, rather than leaving it for the user. By Marc Savy (@msavy).io.apiman:apiman-parent:<version>
). This contains managed versions of all Apiman Maven dependencies, which may be useful for plugin authors. By Marc Savy (@msavy).apiman.properties
). Not rolled out everywhere, but provides a more unified experience with much better error messages and type validation. By Marc Savy (@msavy).http://localhost:8080/portal
, and you can customise the portal by editing its various configuration options in standalone/configuration/portal/assets/
. By Marc Savy (@msavy).***fastbuild.sh***
script to build apiman as fast as possible in parallel using mvnd
or mvnw
. It skips test and javadoc. By Marc Savy (@msavy).$ocLazyLoad
, this avoids the Apiman Manager UI initial download being larger. By Marc Savy (@msavy).--build-arg
s for most variables, such as Apiman’s version, JDBC driver versions, etc. By Marc Savy (@msavy).create or replace procedure
syntax we use, and the 9.x lineage is not supported upstream anymore.ESStorage
and associated code. See: AEP 2: Drop Elasticsearch as Manager API database in Apiman 3 (keep for metrics, gateway, etc). By Marc Savy (@msavy).apiman.properties
. By Marc Savy (@msavy) in https://github.com/apiman/apiman/pull/2012
RestExceptionMapper
actually prints stack trace. By Marc Savy (@msavy)
#equals
and #hashCode
By Marc Savy (@msavy)
Full Changelog: 2.2.3.Final...3.0.0.Final
All notable changes to Apiman will be documented here (as of Apiman 3).
write-to
option. To facilitate scrape-based metrics patterns, this commit allows Apiman’s ES metrics to be written to a log file as JSON via whichever logging framework you are using (asynchronously). You can set any combination of remote
(ES server) or/and log
(local). By Marc Savy (@msavy)./openapi.json
or /openapi.yml
. For example, http://localhost:8080/apiman/openapi.json. By Marc Savy (@msavy).getAllowedIssuers
check was mistakenly inverted. By ronimhd.Full Changelog: 3.0.0.Final...3.1.0-SNAPSHOT
A huge thanks to every company that has worked with Apiman’s main developer via consulting, support, sponsoring features, or other means. Without financial support, Apiman open source will not continue to be developed.
Particular thanks go to the team at Scheer PAS who sponsored a considerable amount of the work that is in the 3.0.0.Final release.
apiEditor
permission will receive an in-browser notification and email notification. In-browser notifications can be seen by pressing the bell in the top-right corner of the screen. Notifications can be disabled entirely in apiman.properties
. By Marc Savy (@msavy).apiman.properties
. By Marc Savy (@msavy).ApimanLoggerFactory.getLogger(YourClazz.class)
. The previous approach tried to be very flexible, but ended up mostly being inconvenient and clumsy. An appropriate logger implementation is selected for each platform Apiman ships on, rather than leaving it for the user. By Marc Savy (@msavy).io.apiman:apiman-parent:<version>
). This contains managed versions of all Apiman Maven dependencies, which may be useful for plugin authors. By Marc Savy (@msavy).apiman.properties
). Not rolled out everywhere, but provides a more unified experience with much better error messages and type validation. By Marc Savy (@msavy).http://localhost:8080/portal
, and you can customise the portal by editing its various configuration options in standalone/configuration/portal/assets/
. By Marc Savy (@msavy).***fastbuild.sh***
script to build apiman as fast as possible in parallel using mvnd
or mvnw
. It skips test and javadoc. By Marc Savy (@msavy).$ocLazyLoad
, this avoids the Apiman Manager UI initial download being larger. By Marc Savy (@msavy).--build-arg
s for most variables, such as Apiman’s version, JDBC driver versions, etc. By Marc Savy (@msavy).create or replace procedure
syntax we use, and the 9.x lineage is not supported upstream anymore.ESStorage
and associated code. See: AEP 2: Drop Elasticsearch as Manager API database in Apiman 3 (keep for metrics, gateway, etc). By Marc Savy (@msavy).apiman.properties
. By Marc Savy (@msavy) in https://github.com/apiman/apiman/pull/2012
RestExceptionMapper
actually prints stack trace. By Marc Savy (@msavy)
#equals
and #hashCode
By Marc Savy (@msavy)
Full Changelog: 2.2.3.Final...3.0.0.Final
All notable changes to Apiman will be documented here (as of Apiman 3).
write-to
option. To facilitate scrape-based metrics patterns, this commit allows Apiman’s ES metrics to be written to a log file as JSON via whichever logging framework you are using (asynchronously). You can set any combination of remote
(ES server) or/and log
(local). By Marc Savy (@msavy)./openapi.json
or /openapi.yml
. For example, http://localhost:8080/apiman/openapi.json. By Marc Savy (@msavy).getAllowedIssuers
check was mistakenly inverted. By ronimhd.Full Changelog: 3.0.0.Final...3.1.0-SNAPSHOT
A huge thanks to every company that has worked with Apiman’s main developer via consulting, support, sponsoring features, or other means. Without financial support, Apiman open source will not continue to be developed.
Particular thanks go to the team at Scheer PAS who sponsored a considerable amount of the work that is in the 3.0.0.Final release.
apiEditor
permission will receive an in-browser notification and email notification. In-browser notifications can be seen by pressing the bell in the top-right corner of the screen. Notifications can be disabled entirely in apiman.properties
. By Marc Savy (@msavy).apiman.properties
. By Marc Savy (@msavy).ApimanLoggerFactory.getLogger(YourClazz.class)
. The previous approach tried to be very flexible, but ended up mostly being inconvenient and clumsy. An appropriate logger implementation is selected for each platform Apiman ships on, rather than leaving it for the user. By Marc Savy (@msavy).io.apiman:apiman-parent:<version>
). This contains managed versions of all Apiman Maven dependencies, which may be useful for plugin authors. By Marc Savy (@msavy).apiman.properties
). Not rolled out everywhere, but provides a more unified experience with much better error messages and type validation. By Marc Savy (@msavy).http://localhost:8080/portal
, and you can customise the portal by editing its various configuration options in standalone/configuration/portal/assets/
. By Marc Savy (@msavy).***fastbuild.sh***
script to build apiman as fast as possible in parallel using mvnd
or mvnw
. It skips test and javadoc. By Marc Savy (@msavy).$ocLazyLoad
, this avoids the Apiman Manager UI initial download being larger. By Marc Savy (@msavy).--build-arg
s for most variables, such as Apiman’s version, JDBC driver versions, etc. By Marc Savy (@msavy).create or replace procedure
syntax we use, and the 9.x lineage is not supported upstream anymore.ESStorage
and associated code. See: AEP 2: Drop Elasticsearch as Manager API database in Apiman 3 (keep for metrics, gateway, etc). By Marc Savy (@msavy).apiman.properties
. By Marc Savy (@msavy) in https://github.com/apiman/apiman/pull/2012
RestExceptionMapper
actually prints stack trace. By Marc Savy (@msavy)
#equals
and #hashCode
By Marc Savy (@msavy)
Full Changelog: 2.2.3.Final...3.0.0.Final
All notable changes to Apiman will be documented here (as of Apiman 3).
write-to
option. To facilitate scrape-based metrics patterns, this commit allows Apiman’s ES metrics to be written to a log file as JSON via whichever logging framework you are using (asynchronously). You can set any combination of remote
(ES server) or/and log
(local). By Marc Savy (@msavy)./openapi.json
or /openapi.yml
. For example, http://localhost:8080/apiman/openapi.json. By Marc Savy (@msavy).getAllowedIssuers
check was mistakenly inverted. By ronimhd.Full Changelog: 3.0.0.Final...3.1.0-SNAPSHOT
A huge thanks to every company that has worked with Apiman’s main developer via consulting, support, sponsoring features, or other means. Without financial support, Apiman open source will not continue to be developed.
Particular thanks go to the team at Scheer PAS who sponsored a considerable amount of the work that is in the 3.0.0.Final release.
apiEditor
permission will receive an in-browser notification and email notification. In-browser notifications can be seen by pressing the bell in the top-right corner of the screen. Notifications can be disabled entirely in apiman.properties
. By Marc Savy (@msavy).apiman.properties
. By Marc Savy (@msavy).ApimanLoggerFactory.getLogger(YourClazz.class)
. The previous approach tried to be very flexible, but ended up mostly being inconvenient and clumsy. An appropriate logger implementation is selected for each platform Apiman ships on, rather than leaving it for the user. By Marc Savy (@msavy).io.apiman:apiman-parent:<version>
). This contains managed versions of all Apiman Maven dependencies, which may be useful for plugin authors. By Marc Savy (@msavy).apiman.properties
). Not rolled out everywhere, but provides a more unified experience with much better error messages and type validation. By Marc Savy (@msavy).http://localhost:8080/portal
, and you can customise the portal by editing its various configuration options in standalone/configuration/portal/assets/
. By Marc Savy (@msavy).***fastbuild.sh***
script to build apiman as fast as possible in parallel using mvnd
or mvnw
. It skips test and javadoc. By Marc Savy (@msavy).$ocLazyLoad
, this avoids the Apiman Manager UI initial download being larger. By Marc Savy (@msavy).--build-arg
s for most variables, such as Apiman’s version, JDBC driver versions, etc. By Marc Savy (@msavy).create or replace procedure
syntax we use, and the 9.x lineage is not supported upstream anymore.ESStorage
and associated code. See: AEP 2: Drop Elasticsearch as Manager API database in Apiman 3 (keep for metrics, gateway, etc). By Marc Savy (@msavy).apiman.properties
. By Marc Savy (@msavy) in https://github.com/apiman/apiman/pull/2012
RestExceptionMapper
actually prints stack trace. By Marc Savy (@msavy)
#equals
and #hashCode
By Marc Savy (@msavy)
Full Changelog: 2.2.3.Final...3.0.0.Final