Oliver Drotbohm
5444e14017
#1122 - Polishing.
2019-11-22 12:00:15 +01:00
Oliver Drotbohm
3d9fe3893f
#1122 - Fixed generics declaration in RepresentationModelAssemblerSupport.
...
We constrained the RepresentationModel type parameter in a way that non of the RepresentationModel subclasses we provide aren't usable with it. That's now fixed by loosing that restriction to an arbitrary type.
2019-11-22 12:00:04 +01:00
Greg Turnquist
fff5396a1c
#1059 - Cleanup the core codebase.
...
Clean up code containing various patterns:
* Remove redundant `final`, `public`, and `static` declarations in interfaces and enums.
* Replace redundant `? extends Object` generic parameters with `?`.
* Convert collections to arrays using empty array instead of pre-sized one (modern JVM recommendation).
* Initialize collections using constructor call over `addAll`.
* Favor `addAll` over iterating and adding one-by-one.
* Take advantage of `Map.forEach` that was introduced with Java 8.
2019-08-30 17:43:07 -05:00
Oliver Drotbohm
fc1b4a8b51
#1018 - HAL Forms properties customizable via annotations on representation model classes.
...
We now consider additional Jackson and JSR-303 annotations on representation models to enrich the HAL Forms template properties with additional information:
- @NotNull on a property flips its `required` flag to `true`.
- The "regexp" attribute of @Pattern on a property is forwarded into the "regex" field.
- @JsonProperty(Access.READ_ONLY) on a property is translated into the "readOnly" flag.
The default for the "required" flag have been changed to false even for PUT and POST as whether they're required or not is completely determined by the model, not the HTTP method.
All of this is backed by significant refactoring in the way that Affordance instances are build internally. The new API is centered around the Affordances type in the mediatype package. The methods on Link to create the Affordance` from its details have been removed and replaced by builder style APIs on Affordance. AffordanceModelFactory has been moved to the mediatype as well.
PropertyUtils has been significantly revamped to expose a PayloadMetadata/PropertyMetadata model to abstract the individual traits of a property. This allows to optionally plug in the support for JSR-303 annotations. AffordanceModelFactory has been refactored to rather work with those instead of ResolvableType.
2019-07-18 13:07:58 +02:00
Oliver Drotbohm
ec8fba1dd5
#1020 - Re-introduce BasicLinkBuilder.
...
Reintroduced type apparently lost in the package restructuring. Adapted migration script to include the package rename in the migration.
2019-07-17 14:44:06 +02:00
Greg Turnquist
a0469e0371
#445 - Make RepresentationModelAssemblerSupport extensible.
...
Original pull-request: #590
2019-06-28 06:19:23 -05:00
Jens Schauder
aa95cbe9dd
#983 - Polishing.
...
Tiny code simplification.
Related issues: #986 .
2019-06-27 14:40:03 +02:00
Greg Turnquist
6a7e343acc
#983 - Switch to Spring's ServerWebExchangeContextFilter.
...
Replace HypermediaWebFilter with ServerWebExchangeContextFilter.
Related issues: #986 , spring-projects/spring-framework#21746 .
2019-06-27 14:39:53 +02:00
Oliver Drotbohm
628148a169
#1003 - BoundMethodParameter now only uses first level nesting for JDK 8 optional.
2019-06-27 14:06:16 +02:00
Oliver Drotbohm
6575a8ddae
#998 - WebMvcHateoasConfiguration now delays a beans-of-type lookup.
...
We now delay the lookup of RepresentationModelProcessor instances in WebMvcHateoasConfiguration so that the BeanPostProcessor registered does now not trigger eager initialization of downstream beans.
2019-06-05 19:50:11 +02:00
Jens Schauder
09ac7fb0c0
#859 - Polishing.
...
Changed http urls to https.
Minor changes to formatting.
2019-05-08 18:44:59 +02:00
Greg Turnquist
1e621784e7
#859 - Fix RepresentationModelProcessor to smoothly register with Spring MVC.
...
Some more polishing on internal of Processor and Invoker machinery regarding resource -> model, etc.
2019-05-08 18:44:59 +02:00
Oliver Drotbohm
a0937f7c28
#977 - Simplified recreation of LinkBuilderSupport.
...
LinkBuilderSupport's constructor now obtains a UriComponentsBuilder in a less complicated way.
Benchmarks before:
Benchmark Mode Cnt Score Error Units
ControllerLinkBuilderBenchmark.simpleLinkCreation thrpt 20 40,462 ± 1,572 ops/s
Benchmarks after:
Benchmark Mode Cnt Score Error Units
ControllerLinkBuilderBenchmark.simpleLinkCreation thrpt 20 41,158 ± 0,624 ops/s
2019-04-05 22:33:53 +02:00
Oliver Drotbohm
39404ea2d9
#977 - Performance improvements in link generation.
...
Introduced more caches for reusable value objects: UriTemplate, MethodParameters. Cache UriTemplate.toString() to avoid re-computation. Avoid recomputing the affordances if possible in WebHandler. Removed cache in AnnotatedParametersParameterAccessor as that one now transitively benefits from the one introduced in MethodParameters.
Related ticket: spring-projects/spring-framework#22730 .
2019-04-03 18:39:40 +02:00
Spring Operator
0e02d4f041
#910 - URL cleanup.
...
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).
# Fixed URLs
## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.
* [ ] http://www.apache.org/licenses/ with 2 occurrences migrated to:
https://www.apache.org/licenses/ ([https](https://www.apache.org/licenses/ ) result 200).
* [ ] http://www.apache.org/licenses/LICENSE-2.0 with 268 occurrences migrated to:
https://www.apache.org/licenses/LICENSE-2.0 ([https](https://www.apache.org/licenses/LICENSE-2.0 ) result 200).
2019-03-22 17:32:52 +01:00
Oliver Drotbohm
bf5b8c0e76
#891 - Overhauled reference documentation on EntityLinks.
...
Added new paragraphs on EntityLinks, ControllerEntityLinks, TypedEntityLinks and using EntityLinks as SPI.
Polished Javadoc of ControllerEntityLinks and its unit tests.
2019-03-22 16:49:17 +01:00
Spring Operator
dd910f77df
#890 - URL cleanup.
...
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).
# HTTP URLs that Could Not Be Fixed
These URLs were unable to be fixed. Please review them to see if they can be manually resolved.
* [ ] http://alps.io (200) with 1 occurrences could not be migrated:
([https](https://alps.io ) result AnnotatedConnectException).
* [ ] http://alps.io/spec/ (200) with 6 occurrences could not be migrated:
([https](https://alps.io/spec/ ) result AnnotatedConnectException).
* [ ] http://amundsen.com/media-types/collection/ (200) with 1 occurrences could not be migrated:
([https](https://amundsen.com/media-types/collection/ ) result AnnotatedConnectException).
* [ ] http://amundsen.com/media-types/collection/examples/ (200) with 7 occurrences could not be migrated:
([https](https://amundsen.com/media-types/collection/examples/ ) result AnnotatedConnectException).
* [ ] http://amundsen.com/media-types/collection/format/ (200) with 2 occurrences could not be migrated:
([https](https://amundsen.com/media-types/collection/format/ ) result AnnotatedConnectException).
* [ ] http://stateless.co/hal_specification.html (200) with 2 occurrences could not be migrated:
([https](https://stateless.co/hal_specification.html ) result SSLHandshakeException).
* [ ] http://www.opensearch.org/Specifications/OpenSearch/1.1 (200) with 1 occurrences could not be migrated:
([https](https://www.opensearch.org/Specifications/OpenSearch/1.1 ) result SSLHandshakeException).
* [ ] http://foo.com/bar (301) with 8 occurrences could not be migrated:
([https](https://foo.com/bar ) result SSLHandshakeException).
* [ ] http://www.csse.monash.edu.au/~damian/papers/HTML/Plurals.html (302) with 1 occurrences could not be migrated:
([https](https://www.csse.monash.edu.au/~damian/papers/HTML/Plurals.html ) result SSLHandshakeException).
* [ ] http://alps.io/ext/range (404) with 2 occurrences could not be migrated:
([https](https://alps.io/ext/range ) result AnnotatedConnectException).
# Fixed URLs
## Fixed But Review Recommended
These URLs were fixed, but the https status was not OK. However, the https status was the same as the http request or http redirected to an https URL, so they were migrated. Your review is recommended.
* [ ] http://tools.ietf.org/html/draft-kelly-json-hal (301) with 2 occurrences migrated to:
https://tools.ietf.org/html/draft-kelly-json-hal ([https](https://tools.ietf.org/html/draft-kelly-json-hal ) result ReadTimeoutException).
* [ ] http://api.acme.com/foo/ (UnknownHostException) with 1 occurrences migrated to:
https://api.acme.com/foo/ ([https](https://api.acme.com/foo/ ) result UnknownHostException).
* [ ] http://barfoo:8888 (UnknownHostException) with 2 occurrences migrated to:
https://barfoo:8888 ([https](https://barfoo:8888 ) result UnknownHostException).
* [ ] http://examples.org/blogs/jdoe (UnknownHostException) with 7 occurrences migrated to:
https://examples.org/blogs/jdoe ([https](https://examples.org/blogs/jdoe ) result UnknownHostException).
* [ ] http://examples.org/blogs/msmith (UnknownHostException) with 4 occurrences migrated to:
https://examples.org/blogs/msmith ([https](https://examples.org/blogs/msmith ) result UnknownHostException).
* [ ] http://examples.org/blogs/rwilliams (UnknownHostException) with 4 occurrences migrated to:
https://examples.org/blogs/rwilliams ([https](https://examples.org/blogs/rwilliams ) result UnknownHostException).
* [ ] http://examples.org/images/jdoe (UnknownHostException) with 7 occurrences migrated to:
https://examples.org/images/jdoe ([https](https://examples.org/images/jdoe ) result UnknownHostException).
* [ ] http://examples.org/images/msmith (UnknownHostException) with 4 occurrences migrated to:
https://examples.org/images/msmith ([https](https://examples.org/images/msmith ) result UnknownHostException).
* [ ] http://examples.org/images/rwilliams (UnknownHostException) with 4 occurrences migrated to:
https://examples.org/images/rwilliams ([https](https://examples.org/images/rwilliams ) result UnknownHostException).
* [ ] http://foobar (UnknownHostException) with 1 occurrences migrated to:
https://foobar ([https](https://foobar ) result UnknownHostException).
* [ ] http://foobar:8088 (UnknownHostException) with 2 occurrences migrated to:
https://foobar:8088 ([https](https://foobar:8088 ) result UnknownHostException).
* [ ] http://foobarhost/ (UnknownHostException) with 2 occurrences migrated to:
https://foobarhost/ ([https](https://foobarhost/ ) result UnknownHostException).
* [ ] http://foobarhost:9090/ (UnknownHostException) with 2 occurrences migrated to:
https://foobarhost:9090/ ([https](https://foobarhost:9090/ ) result UnknownHostException).
* [ ] http://myhost/cart/42 (UnknownHostException) with 1 occurrences migrated to:
https://myhost/cart/42 ([https](https://myhost/cart/42 ) result UnknownHostException).
* [ ] http://myhost/inventory/12 (UnknownHostException) with 3 occurrences migrated to:
https://myhost/inventory/12 ([https](https://myhost/inventory/12 ) result UnknownHostException).
* [ ] http://myhost/people/42 (UnknownHostException) with 2 occurrences migrated to:
https://myhost/people/42 ([https](https://myhost/people/42 ) result UnknownHostException).
* [ ] http://myhost/person/1 (UnknownHostException) with 1 occurrences migrated to:
https://myhost/person/1 ([https](https://myhost/person/1 ) result UnknownHostException).
* [ ] http://myhost/person/1/orders (UnknownHostException) with 1 occurrences migrated to:
https://myhost/person/1/orders ([https](https://myhost/person/1/orders ) result UnknownHostException).
* [ ] http://proxy1:1443 (UnknownHostException) with 2 occurrences migrated to:
https://proxy1:1443 ([https](https://proxy1:1443 ) result UnknownHostException).
* [ ] http://somehost/bar (UnknownHostException) with 1 occurrences migrated to:
https://somehost/bar ([https](https://somehost/bar ) result UnknownHostException).
* [ ] http://somehost/foo (UnknownHostException) with 1 occurrences migrated to:
https://somehost/foo ([https](https://somehost/foo ) result UnknownHostException).
* [ ] http://somehost/foo/ (UnknownHostException) with 1 occurrences migrated to:
https://somehost/foo/ ([https](https://somehost/foo/ ) result UnknownHostException).
* [ ] http://somehost/foo/bar (UnknownHostException) with 1 occurrences migrated to:
https://somehost/foo/bar ([https](https://somehost/foo/bar ) result UnknownHostException).
* [ ] http://somehost/foo/bar/foobar (UnknownHostException) with 1 occurrences migrated to:
https://somehost/foo/bar/foobar ([https](https://somehost/foo/bar/foobar ) result UnknownHostException).
* [ ] http://somethingDifferent (UnknownHostException) with 2 occurrences migrated to:
https://somethingDifferent ([https](https://somethingDifferent ) result UnknownHostException).
* [ ] http://acme.com/rels/foo-bar (404) with 2 occurrences migrated to:
https://acme.com/rels/foo-bar ([https](https://acme.com/rels/foo-bar ) result 404).
* [ ] http://example.com/api (404) with 2 occurrences migrated to:
https://example.com/api ([https](https://example.com/api ) result 404).
* [ ] http://example.com/custom/deprecated (404) with 1 occurrences migrated to:
https://example.com/custom/deprecated ([https](https://example.com/custom/deprecated ) result 404).
* [ ] http://example.com/customers/deprecated (404) with 6 occurrences migrated to:
https://example.com/customers/deprecated ([https](https://example.com/customers/deprecated ) result 404).
* [ ] http://example.com/rels/ (404) with 2 occurrences migrated to:
https://example.com/rels/ ([https](https://example.com/rels/ ) result 404).
* [ ] http://example.com/rels/persons (404) with 1 occurrences migrated to:
https://example.com/rels/persons ([https](https://example.com/rels/persons ) result 404).
* [ ] http://example.org/blogs/wchandry (404) with 3 occurrences migrated to:
https://example.org/blogs/wchandry ([https](https://example.org/blogs/wchandry ) result 404).
* [ ] http://example.org/friends/ (404) with 19 occurrences migrated to:
https://example.org/friends/ ([https](https://example.org/friends/ ) result 404).
* [ ] http://example.org/friends/?queries (404) with 3 occurrences migrated to:
https://example.org/friends/?queries ([https](https://example.org/friends/?queries ) result 404).
* [ ] http://example.org/friends/?template (404) with 3 occurrences migrated to:
https://example.org/friends/?template ([https](https://example.org/friends/?template ) result 404).
* [ ] http://example.org/friends/jdoe (404) with 6 occurrences migrated to:
https://example.org/friends/jdoe ([https](https://example.org/friends/jdoe ) result 404).
* [ ] http://example.org/friends/msmith (404) with 3 occurrences migrated to:
https://example.org/friends/msmith ([https](https://example.org/friends/msmith ) result 404).
* [ ] http://example.org/friends/rss (404) with 7 occurrences migrated to:
https://example.org/friends/rss ([https](https://example.org/friends/rss ) result 404).
* [ ] http://example.org/friends/rwilliams (404) with 3 occurrences migrated to:
https://example.org/friends/rwilliams ([https](https://example.org/friends/rwilliams ) result 404).
* [ ] http://example.org/friends/search (404) with 4 occurrences migrated to:
https://example.org/friends/search ([https](https://example.org/friends/search ) result 404).
* [ ] http://example.org/images/wchandry (404) with 3 occurrences migrated to:
https://example.org/images/wchandry ([https](https://example.org/images/wchandry ) result 404).
* [ ] http://example.org/rels/todo (404) with 3 occurrences migrated to:
https://example.org/rels/todo ([https](https://example.org/rels/todo ) result 404).
* [ ] http://example.org/samples/full/doc.html (404) with 3 occurrences migrated to:
https://example.org/samples/full/doc.html ([https](https://example.org/samples/full/doc.html ) result 404).
* [ ] http://pubsubhubbub.googlecode.com (404) with 1 occurrences migrated to:
https://pubsubhubbub.googlecode.com ([https](https://pubsubhubbub.googlecode.com ) result 404).
* [ ] http://www.example.com/rels/ (404) with 1 occurrences migrated to:
https://www.example.com/rels/ ([https](https://www.example.com/rels/ ) result 404).
## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.
* [ ] http://docs.spring.io/spring-hateoas/docs/current/reference/html/ with 1 occurrences migrated to:
https://docs.spring.io/spring-hateoas/docs/current/reference/html/ ([https](https://docs.spring.io/spring-hateoas/docs/current/reference/html/ ) result 200).
* [ ] http://docs.spring.io/spring-hateoas/docs/current/reference/pdf/spring-hateoas-reference.pdf with 1 occurrences migrated to:
https://docs.spring.io/spring-hateoas/docs/current/reference/pdf/spring-hateoas-reference.pdf ([https](https://docs.spring.io/spring-hateoas/docs/current/reference/pdf/spring-hateoas-reference.pdf ) result 200).
* [ ] http://en.wikipedia.org/wiki/HATEOAS with 2 occurrences migrated to:
https://en.wikipedia.org/wiki/HATEOAS ([https](https://en.wikipedia.org/wiki/HATEOAS ) result 200).
* [ ] http://example.com?name=foo with 1 occurrences migrated to:
https://example.com?name=foo ([https](https://example.com?name=foo ) result 200).
* [ ] http://mamund.site44.com/misc/hal-forms/ with 1 occurrences migrated to:
https://mamund.site44.com/misc/hal-forms/ ([https](https://mamund.site44.com/misc/hal-forms/ ) result 200).
* [ ] http://uberhypermedia.org/ (302) with 2 occurrences migrated to:
https://rawgit.com/uber-hypermedia/specification/master/uber-hypermedia.html ([https](https://uberhypermedia.org/ ) result 200).
* [ ] http://tools.ietf.org/html/draft-kelly-json-hal-05 with 1 occurrences migrated to:
https://tools.ietf.org/html/draft-kelly-json-hal-05 ([https](https://tools.ietf.org/html/draft-kelly-json-hal-05 ) result 200).
* [ ] http://tools.ietf.org/html/rfc6570 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc6570 ([https](https://tools.ietf.org/html/rfc6570 ) result 200).
* [ ] http://www.example.com with 2 occurrences migrated to:
https://www.example.com ([https](https://www.example.com ) result 200).
* [ ] http://www.hixie.ch/specs/pingback/pingback with 1 occurrences migrated to:
https://www.hixie.ch/specs/pingback/pingback ([https](https://www.hixie.ch/specs/pingback/pingback ) result 200).
* [ ] http://www.iana.org/assignments/link-relations/link-relations.xhtml with 2 occurrences migrated to:
https://www.iana.org/assignments/link-relations/link-relations.xhtml ([https](https://www.iana.org/assignments/link-relations/link-relations.xhtml ) result 200).
* [ ] http://www.w3.org/TR/2011/WD-html5-20110113/links.html with 1 occurrences migrated to:
https://www.w3.org/TR/2011/WD-html5-20110113/links.html ([https](https://www.w3.org/TR/2011/WD-html5-20110113/links.html ) result 200).
* [ ] http://www.w3.org/TR/html5/links.html with 11 occurrences migrated to:
https://www.w3.org/TR/html5/links.html ([https](https://www.w3.org/TR/html5/links.html ) result 200).
* [ ] http://www.w3.org/TR/powder-dr/ with 1 occurrences migrated to:
https://www.w3.org/TR/powder-dr/ ([https](https://www.w3.org/TR/powder-dr/ ) result 200).
* [ ] http://www.w3.org/TR/preload/ with 1 occurrences migrated to:
https://www.w3.org/TR/preload/ ([https](https://www.w3.org/TR/preload/ ) result 200).
* [ ] http://www.w3.org/TR/resource-hints/ with 1 occurrences migrated to:
https://www.w3.org/TR/resource-hints/ ([https](https://www.w3.org/TR/resource-hints/ ) result 200).
* [ ] http://www.w3.org/TR/webmention/ with 1 occurrences migrated to:
https://www.w3.org/TR/webmention/ ([https](https://www.w3.org/TR/webmention/ ) result 200).
* [ ] http://amazon.com with 4 occurrences migrated to:
https://amazon.com ([https](https://amazon.com ) result 301).
* [ ] http://contributor-covenant.org with 1 occurrences migrated to:
https://contributor-covenant.org ([https](https://contributor-covenant.org ) result 301).
* [ ] http://contributor-covenant.org/version/1/3/0/ with 1 occurrences migrated to:
https://contributor-covenant.org/version/1/3/0/ ([https](https://contributor-covenant.org/version/1/3/0/ ) result 301).
* [ ] http://www.w3.org/TR/1999/REC-html401-19991224 with 10 occurrences migrated to:
https://www.w3.org/TR/1999/REC-html401-19991224 ([https](https://www.w3.org/TR/1999/REC-html401-19991224 ) result 301).
* [ ] http://www.w3.org/TR/curie with 1 occurrences migrated to:
https://www.w3.org/TR/curie ([https](https://www.w3.org/TR/curie ) result 301).
* [ ] http://tools.ietf.org/html/rfc5988=section-4 with 1 occurrences migrated to:
https://tools.ietf.org/html/rfc5988=section-4 ([https](https://tools.ietf.org/html/rfc5988=section-4 ) result 302).
* [ ] http://www.springsource.org/download with 1 occurrences migrated to:
https://www.springsource.org/download ([https](https://www.springsource.org/download ) result 302).
# Ignored
These URLs were intentionally ignored.
* http://localhost with 11 occurrences
* http://localhost/ with 1 occurrences
* http://localhost/customers/15 with 1 occurrences
* http://localhost/employees with 56 occurrences
* http://localhost/employees/0 with 34 occurrences
* http://localhost/employees/1 with 15 occurrences
* http://localhost/employees/2 with 24 occurrences
* http://localhost/sample/1/foo with 1 occurrences
* http://localhost/sample/2/bar with 1 occurrences
* http://localhost/something/bar/foo with 2 occurrences
* http://localhost:8080/ with 2 occurrences
* http://localhost:8080/api with 8 occurrences
* http://localhost:8080/api/ with 1 occurrences
* http://localhost:8080/api/employees with 4 occurrences
* http://localhost:8080/employees/1 with 4 occurrences
* http://localhost:8080/foo with 2 occurrences
* http://localhost:8080/my/custom/location with 2 occurrences
* http://localhost:8080/rels with 1 occurrences
* http://localhost:8080/rels/ with 6 occurrences
* http://localhost:8080/test?page=0&filter=foo,bar with 2 occurrences
* http://localhost:8080/your-app with 1 occurrences
* http://localhost:8080/your-app/people with 1 occurrences
* http://www.w3.org/2005/Atom with 1 occurrences
2019-03-21 16:32:51 +01:00
Oliver Drotbohm
75ad0988cd
#831 - Polishing.
...
Significant rework of the nullability annotation introduction to not produce any warnings anymore. Added nullability annotations where still missing. Removed the ones that were added erroneously.
Tightened nullability contracts in a couple of places, most prominently LinkRelationProvider, that now uses a LookupContext as plugin delimiter so that implementations can selectively be looked up for item or collection link relation lookup.
Removed obsolete declaration of Findbugs dependency.
2019-03-20 00:15:35 +01:00
Greg Turnquist
520fdc8d91
#831 - Polishing.
2019-03-11 17:35:20 -05:00
Jens Schauder
bdd602aa74
#831 - Polishing.
...
Applied some recommendations provided by IntelliJ that I stumbled over while reviewing the changes.
2019-03-11 18:06:15 +01:00
Greg Turnquist
40250d1738
#831 - Introduce null handling.
2019-03-08 13:21:21 -06:00
Oliver Drotbohm
2a2e0fb56b
#854 - Migrate off Objenesis in favor of Spring's ProxyFactory.
2019-03-05 13:16:38 +01:00
Oliver Drotbohm
b608bb0175
#728 - Make sure invocation mappings are resolved eagerly.
...
Tweaked WebFluxLinkBuilder to make sure the controller invocations are resolved eagerly as otherwise, the controller proxy created would override the invocations due to the lazy evaluation of the links and for multiple method references, only the last one would have been used.
2019-03-04 19:08:00 +01:00
Oliver Drotbohm
5c046e6858
#848 - Renamed RelProvider to LinkRelationProvider.
2019-03-04 16:39:06 +01:00
Oliver Drotbohm
23c0a34c66
#842 - Remove Identifiable.
2019-02-28 23:58:42 +01:00
Oliver Drotbohm
3077211db2
#844 - Moved TypeReferences to server.core package.
2019-02-28 20:29:55 +01:00
Oliver Drotbohm
ff8bc33daf
#843 - Introduced EntityLinks.link(To|For)ItemResource(Object, Function).
...
The introduced methods allow clients to pass an identifier extractor function. Also introduced a new (Extended)TypedEntityLinks that exposes the same functionality as EntityLinks but with a shared identifier extractor function so that clients don't have to provide it for each method invocation.
Prepares the fix for #842 .
2019-02-28 20:29:06 +01:00
Oliver Drotbohm
a89e57eed7
#833 - Changed ResourceSupport class name hierarchy.
2019-02-27 20:04:15 +01:00
Oliver Drotbohm
57f36a58db
#833 - Migrate packages.
...
Changed the package structure to better reflect the different modules of the library. All client related code now lives in the client package, server related APIs in server with their respective WebMVC and WebFlux implementations in sub-packages.
Added migration script to allow users to easily migrate to the new structure and added reference documentation section on the migration.
Traversons built in defaulting to HAL HttpMessageConverters and LinkDiscoverer implementation now caused a cyclic relationship between the client and mediatype.hal packages. This has be fixed by looking up the defaults via a SpringFactories interface.
2019-02-27 12:59:58 +01:00