profile
viewpoint
Greg Turnquist gregturn Pivotal Software (home of Spring) Clarksville, TN http://greglturnquist.com/list Principal Engineer @ Pivotal, Spring HATEOAS committer, REST advocate, author of Learning Spring Boot & Darklight

gregturn/asciidoctor-packt 33

Backend and theme to convert Asciidoctor files into Packt Publishing OpenOffice doc

gregturn/debug-your-spring-boot-app 7

Source code for my 2015 webinar

gregturn/embeddable-spring-data-rest 2

An example of using Spring Data REST with an embeddable subtable

gregturn/finance 2

Code to help analyze financial data

gregturn/asciidoctor-epub3-mac-for-kindle-bug 1

Capture a bug for Mac for Kindle and asciidoctor-epub3

gregturn/docbook2asciidoctor 1

Convert existing docbook reference manual to asciidoctor

gregturn/asciidoctor-backends 0

Backends (i.e., templates) for Asciidoctor, a Ruby port of AsciiDoc.

gregturn/asciidoctor-pdf 0

:page_facing_up: Asciidoctor PDF: A native PDF renderer for AsciiDoc based on Asciidoctor and Prawn, written entirely in Ruby.

gregturn/asciidoctorj 0

Asciidoctor Java integration & API - Welcomes Asciidoctor to the JVM!

gregturn/brands 0

Reproduce issue with Spring Data REST

delete branch spring-projects/spring-data-rest

delete branch : issue/DATAREST-1426

delete time in 3 days

delete branch spring-projects/spring-data-rest

delete branch : issue/DATAREST-1411

delete time in 3 days

delete branch spring-projects/spring-data-rest

delete branch : issue/DATAREST-1397

delete time in 3 days

delete branch spring-projects/spring-data-rest

delete branch : issue/DATAREST-1483

delete time in 3 days

push eventspring-projects/spring-data-rest

Greg Turnquist

commit sha 4ac8a69fcdc49e4d7fd3c97fd08413a3659dead4

DATAREST-1483 - Enable MongoDB for CI testing.

view details

push time in 3 days

create barnchspring-projects/spring-data-rest

branch : issue/DATAREST-1483

created branch time in 3 days

delete branch spring-projects/spring-data-rest

delete branch : issue/DATAREST-1483

delete time in 3 days

push eventspring-projects/spring-data-rest

Greg Turnquist

commit sha 7a814b1a66923b6122a6cb088d5d06df59998911

DATAREST-1483 - Enable MongoDB for CI testing.

view details

push time in 3 days

create barnchspring-projects/spring-data-rest

branch : issue/DATAREST-1483

created branch time in 3 days

delete branch spring-projects/spring-data-rest

delete branch : issue/DATAREST-1483

delete time in 3 days

push eventspring-projects/spring-data-rest

Greg Turnquist

commit sha 1b93eb75efbfde3dd1766692c994b8b90252fd5c

DATAREST-1483 - Enable MongoDB for CI testing.

view details

Greg Turnquist

commit sha 55a70093dbe8f8a7b0133884457d133b0b007f50

DATAREST-1483 - Upgrade to Hibernate 5.4.8. Migrate to the version of Hibernate used by Spring Data JPA.

view details

push time in 3 days

push eventspring-projects/spring-data-rest

Greg Turnquist

commit sha 349cb0e90d84730ad6b3eac0b9a2e693551e987b

DATAREST-1483 - Upgrade to Hibernate 5.4.8.

view details

push time in 3 days

create barnchspring-projects/spring-data-rest

branch : issue/DATAREST-1483

created branch time in 5 days

push eventspring-projects/spring-data-rest

Greg Turnquist

commit sha 9f5a989b38bf0f647762b8c357e677fb72a382c6

DATAREST-1480 - Polishing.

view details

push time in 5 days

pull request commentspring-guides/tut-rest

Minor README changes

Due to apparent conflicts, you may need to squash and rebase the PR.

ShayRomayo

comment created time in 6 days

issue commentspring-guides/tut-rest

HATEOS related section of the tutorial is outdated

Check out the latest changes and tell if there is yet more to work on.

so-langsam

comment created time in 6 days

pull request commentspring-guides/tut-rest

Fixed spelling in "acceptible"

Thanks @miguelpayet !

miguelpayet

comment created time in 6 days

push eventspring-guides/tut-rest

Miguel Payet

commit sha e138d252f89ab2b22bc0f5c79718bec2f763cb2d

Fixed spelling in "acceptible" Fixed spelling in "acceptible format" to "acceptable format".

view details

push time in 6 days

PR merged spring-guides/tut-rest

Fixed spelling in "acceptible"

Fixed spelling in "acceptible format" to "acceptable format".

+1 -1

2 comments

1 changed file

miguelpayet

pr closed time in 6 days

PR closed spring-guides/tut-rest

Upgrade to HATEOAS 1.0

Fixes #84

This Pull Request consist of 3 major changes:

1. Upgrade whole project to Spring Boot 2.2.2.RELEASE.

1.1. upgrade root POM's parent to 2.2.2.RELEASE. 1.2. remove spring-plugin-core and json-path from root POM (bundled now). 1.3. remove Spring Snapshot Repository from root POM (no longer needed). 1.4. update sub-POMs' h2 to be scoped at runtime (following Spring Initializr). 1.5. update sub-POMs' lombok to be optional (following Spring Initializr). 1.6. update .gitignore (following Spring Initializr). 1.7. all Employee class constructors are public now (following Intellij IDEA's advice). 1.8. upgrade Maven Wrapper to version 0.5.6.

2. Refactor Java code to be compliant with HATEOAS 1.0.

2.1. using migrate-to-1.0.sh. 2.2. replace (assembler::toResource) with (assembler::toModel). 2.3. rename EmployeeResourceAssembler.javato EmployeeModelAssembler.java, OrderResourceAssembler.java to OrderModelAssembler.java. 2.4. change created(URI)'s parameter from new URI(resource.getId().expand().getHref()) to entityModel.getRequiredLink(IanaLinkRelations.SELF).toUri().

3. Update README.adoc to match with the changes above.

3.1. replace all updated class names. 3.2. remove text And don't confuse `ResourceSupport.getId()` with `Employee.getId()`.

All checked, should work just fine.

BTW, thx for this nice tutorial!

+595 -361

3 comments

27 changed files

yanwenkun

pr closed time in 6 days

pull request commentspring-guides/tut-rest

Upgrade to HATEOAS 1.0

@yanwenkun Thanks for your efforts.

I've decided to go with #89 's modifications.

If you wish to skim over those results and see if there is other stuff to polish up, feel free.

yanwenkun

comment created time in 6 days

pull request commentspring-guides/tut-rest

Tutorial Update for Spring HATEOAS 1.0+

Thanks @ShayRomayo!

That was a lot of hard work. I appreciate it.

ShayRomayo

comment created time in 6 days

push eventspring-guides/tut-rest

ShayRomayo

commit sha 268a844841951627aae975add63c3e7d34aa203e

Update to Spring HATEOAS 1.0+ Compatible Refactor - Resoure to EntityModel<> - Resources to CollectionModel<> - ResourceSupport to RepresentationModel Change the self-rel links to match the getId() protocol from HATEOAS 0.X release. [Issue: 84]

view details

ShayRomayo

commit sha 3ebe89a1f190ccb55d6a38f6265815c15eab6f08

Update README for Spring HATEOAS 1.0+ Changed the terms for the refactoring done. Modified some explanations to reflect the new method calls and how they incorporate RESTful design and Links. [Issue: 84]

view details

ShayRomayo

commit sha de95d3704c8a6744495c60f2ab13badaaa5c775c

Add readability to README

view details

ShayRomayo

commit sha a48b5112461c658b5365fd3a2f49a22e2bc8b700

Revert pom.xml to match main repo

view details

ShayRomayo

commit sha f977bff3555803accdfbf1c2c3091eaf412a0752

Implement suggested pom chagnes Implemented changes from Pull Request # 85 to fix pull request fails. [Issue: 89/84]

view details

ShayRomayo

commit sha 94277e159b763fb6175b562e0e2ccd55b89a14f7

Add untracked files and maven wrapper

view details

ShayRomayo

commit sha d549fc9011e62057483d2be2d189faaa2236a89f

Change verison of Spring to include HATEOAS 1.0

view details

push time in 6 days

PR merged spring-guides/tut-rest

Tutorial Update for Spring HATEOAS 1.0+

Implemented changes as in issue #85 as well as modifying the README to reflect the changes made in code. Added some consistency updates to quotes and some extra readability for the aspects of HATEOAS that became less immediately understandable.

+309 -209

2 comments

20 changed files

ShayRomayo

pr closed time in 6 days

issue closedspring-projects/spring-hateoas

No way to configure PagedResourcesAssembler to generate one-indexed pagination links.

By default all pagination links added by PagedResourcesAssembler are zero-indexed, one would expect a way to configure these links to be one-indexed, there seems to be none. My workaround is to have an extended class of PageImpl and tweak methods like previousPageable, nextPageable, hasPrevious hasNext and so on that are being used internally by PagedResourcesAssembler to generate these links. and pass in this CustomPage instance to toResource method of PagedResourcesAssembler .This approach does not look 'clean' to me. Because this Custom Page might accidentally be used somewhere else in the code base and produce undesirable results. This approach at least partially solves the problem, partially because 'first' link will always have "page=0". Could there be a shorter and cleaner way to configure PagedResourcesAssembler to add one-ndexed list of pagination links?

closed time in 9 days

ahmedjaad

issue commentspring-projects/spring-hateoas

No way to configure PagedResourcesAssembler to generate one-indexed pagination links.

Closed in favor of https://jira.spring.io/browse/DATACMNS-1668.

ahmedjaad

comment created time in 9 days

issue closedspring-projects/spring-hateoas

Jax-ws property not resolved when using Spring HATEOAS EnableHypermediaSupport

I have a SOAP Client for ever (using CXF and Spring), I recently add Spring HATEOAS to manage a REST Client.

Including spring-hateoas and @EnableHypermediaSupport makes my Jax-ws client not working anymore (the password property is not resolved anymore, giving "${ws.password}" instead of "xxxx").

This is a MCVE :

Main

public class Main {
    public static void main(String... args){
        ApplicationContext ac = new ClassPathXmlApplicationContext("application-context.xml");
        MySOAPWebservice = ac.getBean(MySOAPWebservice.class);
        System.out.println(w); // when debugging, password is invalid
    }
}

MySOAPWebservice (not included, is a very simple Jax-ws annotated class)

AnotherService

@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL) // comment this for everything to be ok again
@Service
public class AnotherService {
}

application-context.xml

<context:property-placeholder location="application.properties" />

<context:annotation-config/>
<context:component-scan base-package="com.mypackage"/>

<jaxws:client id="soapWSClient"
              serviceClass="com.mypackage.MySOAPWebservice"
              address="${ws.url}">
    <jaxws:properties>
        <entry key="javax.xml.ws.security.auth.password">
            <value type="java.lang.String">${ws.password}</value>
        </entry>
    </jaxws:properties>
</jaxws:client>

pom.xml

<dependency>
    <groupId>org.springframework.hateoas</groupId>
    <artifactId>spring-hateoas</artifactId>
    <version>0.24.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.plugin</groupId>
    <artifactId>spring-plugin-core</artifactId>
    <version>1.2.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.1.1</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxws</artifactId>
    <version>3.1.6</version>
</dependency>

closed time in 9 days

Yunandtidus

issue commentspring-projects/spring-hateoas

Jax-ws property not resolved when using Spring HATEOAS EnableHypermediaSupport

I'm closing this issue due to no feedback.

If you keep having issues with Spring HATEOAS/JAX-WS when using the latest version, please let us know.

Yunandtidus

comment created time in 9 days

pull request commentspring-projects/spring-hateoas

Make mixins public to make re-use of Jackson2HalModule easier

I have poked at this, and don't really see a path forward.

@Test // #492
void renderEmbeddedWithEmptyCollection() throws JsonProcessingException {

	mapper = HalTestUtils.halObjectMapper(new HalConfiguration().withRenderEmptyCollections(true));

	CollectionModel<?> model = CollectionModel.empty();
	model.add(Link.of("http://example.com"));

	String serialized = mapper.writeValueAsString(model);

	assertThat(serialized).isEqualTo("{\"_embedded\":{},\"_links\":{\"self\":{\"href\":\"http://example.com\"}}}");
}

This prototype only gets you an empty collection, not a link relation with an empty list.

The only thing that appears to work, is to use HAL directly, like this:

@Test // #492
void renderEmbeddedWithEmptyLinkRelation() throws JsonProcessingException {

	CollectionModel<?> model = CollectionModel
			.of(Arrays.asList(new EmbeddedWrappers(false).emptyCollectionOf(SomeSample.class)));
	model.add(Link.of("http://example.com"));

	String serialized = mapper.writeValueAsString(model);

	assertThat(serialized)
			.isEqualTo("{\"_embedded\":{\"someSample\":[]},\"_links\":{\"self\":{\"href\":\"http://example.com\"}}}");
}

I don't see how this can be picked up and generalized for the vendor-neutral API.

Essentially, what you are asking HAL to do in the event of an empty collection, is glean what the generic type is without there being any data there.

Java doesn't make it easy to find a generic parameter unless something is there. Unless you manually create a list with the type in it. Framework code doesn't lend itself to this sort of general behavior.

Suggestions welcome!

jstaffans

comment created time in 9 days

push eventspring-guides/tut-react-and-spring-data-rest

Jay Bryant

commit sha 5b4d3e47fc9752759e904c8331a8e09f66d453b0

Editing pass and version upgrade I edited all the readme files (and added callouts, as comments, to several code files). I also upgraded the Spring Boot version to 2.2.4 (the latest) and dealt with the resulting breaking changes in org.springframework.hateoas.

view details

push time in 10 days

PR merged spring-guides/tut-react-and-spring-data-rest

Editing pass and version upgrade

I edited all the readme files (and added callouts, as comments, to several code files). I also upgraded the Spring Boot version to 2.2.4 (the latest) and dealt with the resulting breaking changes in org.springframework.hateoas.

+571 -425

0 comment

21 changed files

Buzzardo

pr closed time in 10 days

push eventspring-projects/spring-session-data-mongodb

Greg Turnquist

commit sha 28dbda286cb083d417ab680a5078d9c6ba310738

Releasing Spring Session for MongoDB v2.3.0.M2

view details

Greg Turnquist

commit sha 73f86a8fd89a343cefc865fef88298984a516d64

Continue development on v2.3.0.BUILD-SNAPSHOT

view details

push time in 10 days

push eventspring-projects/spring-session-data-mongodb

Greg Turnquist

commit sha a23812b9168b737444ea508aff9f93c51bf0af02

Continue development on v2.3.0.BUILD-SNAPSHOT

view details

Greg Turnquist

commit sha 25c5175b63e8bb337c2db7004956802ee916c05a

Upgrade to Spring Data Neumann-M3. Resolves #147.

view details

Greg Turnquist

commit sha 28dbda286cb083d417ab680a5078d9c6ba310738

Releasing Spring Session for MongoDB v2.3.0.M2

view details

push time in 10 days

issue closedspring-projects/spring-session-data-mongodb

Upgrade to Spring Data Neumann-M3.

Need to ship against a stable milestone of Spring Data.

closed time in 10 days

gregturn

push eventspring-projects/spring-session-data-mongodb

Greg Turnquist

commit sha 25c5175b63e8bb337c2db7004956802ee916c05a

Upgrade to Spring Data Neumann-M3. Resolves #147.

view details

push time in 10 days

issue openedspring-projects/spring-session-data-mongodb

Upgrade to Spring Data Neumann-M3.

Need to ship against a stable milestone of Spring Data.

created time in 10 days

create barnchspring-projects/spring-hateoas

branch : issue/HATEOAS-1208

created branch time in 11 days

pull request commentspring-projects/spring-hateoas

559: fix multiple encodings of params

@Climax85 @jeffreycrump

Do you have a test case that exposes the problems here? Also, there have been considerable changes to Spring HATEOAS since this ticket was opened including:

  • Migration to WebMvcLinkBuilder
  • Deprecation of ControllerLinkBuilder
  • Introduction of WebFluxLinkBuilder
  • #593

Please tell me if the latest version (1.1.0.M3 just came out) solves your problems. If not, can you provide a test case illustrating the issue.

Climax85

comment created time in 11 days

delete branch spring-projects/spring-hateoas

delete branch : issue/HATEAOS-1172

delete time in 12 days

delete branch spring-projects/spring-hateoas

delete branch : issue/HATEAOS-1193

delete time in 12 days

push eventspring-projects/spring-hateoas

Greg Turnquist

commit sha 09fad9e90108a301a03c2a464a05e27699d216e9

#1193 - Revised usage of Spring Web Encoder APIs. Spring Web has deprecated several Encoder/Decoder APIs and Spring HATEOAS must revise its usage.

view details

push time in 12 days

issue commentspring-projects/spring-hateoas

Migrate off deprecated Link APIs

See also #1200.

gregturn

comment created time in 12 days

issue commentspring-projects/spring-hateoas

Migrate off deprecated Link APIs

Superceded by https://github.com/spring-projects/spring-hateoas/commit/290b58858a0f86d6991cc8f942b9e3f0b15b9dda.

gregturn

comment created time in 12 days

create barnchspring-projects/spring-hateoas

branch : issue/HATEAOS-1193

created branch time in 12 days

push eventspring-projects/spring-hateoas

Greg Turnquist

commit sha a044ac0de94e6ed68e46fc136e2c71c309c45ff5

#1196 - Upgrade to Jackson 2.10.2.20200130. Backport the Jackson upgrade to 1.0.x.

view details

push time in 12 days

push eventspring-projects/spring-hateoas

Greg Turnquist

commit sha f297bb28e5ead39909cced59148fa6a22796938a

#1195 - Upgrade to Jackson 2.10.2.20200130.

view details

push time in 12 days

issue commentspring-projects/spring-hateoas

WebMvcLinkBuilder/WebFluxLinkBuilder does not resolve URI params declared in interfaces

Expanded scope of this issue to Spring MVC.

krraghavan

comment created time in 13 days

push eventspring-projects/spring-hateoas

Greg Turnquist

commit sha bb7b50ec724f1b9af129d72d5bed1c6bc516434f

#1189 - Look for web annotations in interfaces. When forming links, look at a controller class's interface definitions for possible Spring Web annotations. Related issues: https://github.com/spring-projects/spring-framework/issues/15682

view details

push time in 16 days

issue openedspring-projects/spring-hateoas

Revise usage of Encoder registration APIs

Spring Framework's Encode/Decoder APIs have some new deprecations. Spring HATEOAS needs to update and use the proper APIs.

created time in 16 days

push eventspring-projects/spring-hateoas

Greg Turnquist

commit sha 1452b381312de5305d36678b260fb1b2520aa5c2

#1189 - Look for web annotations in interfaces. When forming links, look at a controller class's interface definitions for possible Spring Web annotations. Related issues: https://github.com/spring-projects/spring-framework/issues/15682

view details

push time in 16 days

push eventspring-projects/spring-hateoas

Greg Turnquist

commit sha 98400ebd866d750f371517abc6358a6ec0da624f

#1189 - Look for web annotations in interfaces. When forming links, look at a controller class's interface definitions for possible Spring Web annotations. Related issues: https://github.com/spring-projects/spring-framework/issues/15682

view details

push time in 16 days

push eventspring-projects/spring-hateoas

Greg Turnquist

commit sha f8127e026bfab0d9a4d886d2efdddd7651935317

#1189 - Look for web annotations in interfaces. When forming links, look at a controller class's interface definitions for possible Spring Web annotations. Related issues: https://github.com/spring-projects/spring-framework/issues/15682

view details

Greg Turnquist

commit sha 99eb765e3fe66aa4cab53bbf32d9c8f034aa063d

Merge branch 'issue/HATEOAS-1189' of github.com:spring-projects/spring-hateoas into issue/HATEOAS-1189

view details

push time in 16 days

create barnchspring-projects/spring-hateoas

branch : issue/HATEOAS-1189

created branch time in 16 days

push eventr2dbc/r2dbc-h2

Stéphane Nicoll

commit sha 4aed995cfabb1972b7e3d2ae533dd9988a297535

Fix typo

view details

Greg Turnquist

commit sha 37c73250a235874bb6204c13f51f04f1546a6eb1

Merge pull request #148 from snicoll/patch-1 Fix typo

view details

push time in 16 days

PR merged r2dbc/r2dbc-h2

Fix typo
+1 -1

0 comment

1 changed file

snicoll

pr closed time in 16 days

push eventr2dbc/r2dbc.github.io

Ben Klein

commit sha fe167d5252abb59d226ae1f1778daedfcba02c76

Edit / polish website content (#18) * Edit / polish website content * Remove extra artifact listing accidentally left * Update version mentions to 0.8.1.RELEASE

view details

push time in 17 days

PR merged r2dbc/r2dbc.github.io

Reviewers
Edit / polish website content

Revised the text on home page, "Clients", "Drivers", and "Resources". Some small formatting changes too.

+88 -90

0 comment

8 changed files

fifthposition

pr closed time in 17 days

Pull request review commentr2dbc/r2dbc.github.io

Edit / polish website content

 layout: default --- -R2DBC (Reactive Relational Database Connectivity) is an endeavor to bring a reactive programming API to SQL databases.+The Reactive Relational Database Connectivity (R2DBC) project brings reactive programming APIs to relational databases.  # In a Nutshell -* **Reactive Streams** - R2DBC is founded on **Reactive Streams** providing a fully **reactive** **non-blocking** API.-* **Relational Databases** - R2DBC engages **SQL** databases with a **reactive API**, something not possible with the blocking nature of JDBC.-* **Scalable Solutions** - Reactive Streams makes it possible to move from the classic one thread per connection approach to a more **powerful**, more **scalable** approach.-* **Open Specification** - R2DBC is an open specification establishing a SPI that driver vendors can implement and clients can consume.+**Based on the Reactive Streams specification.** R2DBC is founded on the Reactive Streams specification, which provides a fully-reactive non-blocking API.++**Works with relational databases.** In contrast to the blocking nature of JDBC, R2DBC allows you to work with SQL databases using a reactive API.++**Supports scalable solutions.** With Reactive Streams, R2DBC enables you to move from the classic "one thread per connection" model to a more powerful and scalable approach.++**Provides an open specification.** R2DBC is an open specification and establishes a Service Provider Interface (SPI) for driver vendors to implement and clients to consume.  # Features  * Broad type conversion-* Transactions, Isolation Levels, Save points+* Transactions, isolation levels, and save points * Batching * BLOB/CLOB * Connection URLs-* Java ServiceLoader-based `ConnectionFactory` discover and configuration+* `ConnectionFactory` discovery and configuration based on Java's `ServiceLoader` * Observability  ## Latest Release-The latest release of R2DBC is 0.8.0.RELEASE. You can [download the spec](/spec/0.8.0.RELEASE/spec/html/) or [browse the javadoc](/spec/0.8.0.RELEASE/api/). -## [Driver Implementations](/drivers/)+The latest release of R2DBC is 0.8.0.RELEASE. You can [download the spec](/spec/0.8.0.RELEASE/spec/html/) or [browse the Javadoc](/spec/0.8.0.RELEASE/api/). 

This should get bumped to 0.8.1.RELEASE.

fifthposition

comment created time in 17 days

Pull request review commentr2dbc/r2dbc.github.io

Edit / polish website content

 permalink: /drivers/  # Service Provider Interface (SPI) -R2DBC defines an SPI all data store drivers must implement:+R2DBC defines an SPI all data store drivers must implement. -* [r2dbc-spi](https://github.com/r2dbc/r2dbc-spi) - set of interfaces defining the SPI for R2DBC.-* [r2dbc-spi-test](https://github.com/r2dbc/r2dbc-spi/tree/master/r2dbc-spi-test) - a **Technology Compatibility Kit (TCK)** contained within the SPI repository for verifying your driver's implementation.+* [r2dbc-spi](https://github.com/r2dbc/r2dbc-spi): a set of interfaces defining the SPI for R2DBC.+* [r2dbc-spi-test](https://github.com/r2dbc/r2dbc-spi/tree/master/r2dbc-spi-test): within the SPI repository, a Technology Compatibility Kit (TCK) for verifying a driver's implementation. -One noticeable difference between R2DBC and JDBC is that JDBC is aimed at both driver writers as well as application developers. Drivers and applications operate on different levels, making this one-size-fits-all less than ideal.+One noticeable difference between R2DBC and JDBC is that JDBC is aimed at both driver writers and application developers. Driver developers and application developers operate at different levels, making this one-size-fits-all model less than ideal. -R2DBC's SPI is deliberately designed to be as small as possible while still capturing critical features for ANY relational data store. This means that data store specific extensions are not targeted by the SPI.+R2DBC's SPI is deliberately designed to be as small as possible, while still including features critical for _any_ relational data store. This means that the SPI does not target extensions which are specific to a data store. -And to ease implementation, a test interface, a veritable TCK, is provided to ensure you are fully operational.+To ease implementation, R2DBC also provides a test interface (a veritable TCK) to ensure your driver is fully operational.  # Existing Drivers -R2DBC drivers implements the SPI listed above. The ones currently supported include:+R2DBC drivers implement the SPI listed above. The ones currently supported include: -* [cloud-spanner-r2dbc](https://github.com/GoogleCloudPlatform/cloud-spanner-r2dbc) - Driver for Google Cloud Spanner.-* [jasync-sql](https://github.com/jasync-sql/jasync-sql) - R2DBC wrapper for Java & Kotlin Async Database Driver for MySQL and PostgreSQL written in Kotlin.-* [r2dbc-h2](https://github.com/r2dbc/r2dbc-h2) - Native driver implemented for H2 as a test database.-* [r2dbc-postgres](https://github.com/r2dbc/r2dbc-postgresql) - Native driver implemented for PostgreSQL.-* [r2dbc-mssql](https://github.com/r2dbc/r2dbc-mssql) - Native driver implemented for Microsoft SQL Server.-* [r2dbc-mysql](https://github.com/mirromutth/r2dbc-mysql) - Native driver implemented for MySQL.+* [cloud-spanner-r2dbc](https://github.com/GoogleCloudPlatform/cloud-spanner-r2dbc) - driver for Google Cloud Spanner.+* [jasync-sql](https://github.com/jasync-sql/jasync-sql) - R2DBC wrapper for Java & Kotlin Async Database Driver for MySQL and PostgreSQL (written in Kotlin).+* [r2dbc-h2](https://github.com/r2dbc/r2dbc-h2) - native driver implemented for H2 as a test database.+* [r2dbc-postgres](https://github.com/r2dbc/r2dbc-postgresql) - native driver implemented for PostgreSQL.+* [r2dbc-mssql](https://github.com/r2dbc/r2dbc-mssql) - native driver implemented for Microsoft SQL Server.+* [r2dbc-mysql](https://github.com/mirromutth/r2dbc-mysql) - native driver implemented for MySQL.  # Connection Pooling  The following connection pool implementations are available for R2DBC: -* [r2dbc-pool](https://github.com/r2dbc/r2dbc-pool) - Reactive connection pooling using Reactor Pool.+* [r2dbc-pool](https://github.com/r2dbc/r2dbc-pool) - reactive connection pooling using Reactor Pool. -# Implementing a driver+# Implementing a Driver -R2DBC has a clearly defined **SPI** you must implement to host a solution for your data store. To build an implementation, add the following artifact to your build:+R2DBC has a clearly-defined SPI, which you must implement to host a solution for your data store. To build an implementation, add the following artifact to your build: -* Group: **io.r2dbc**-* Artifact: **r2dbc-spi**+* <strong>Group</strong> <code>io.r2dbc</code>+* <strong>Artifact</strong> <code>r2dbc-spi</code> -The key interface all driver providers must implement is the [`Connection`](https://r2dbc.io/spec/0.8.0.RELEASE/api/io/r2dbc/spi/Connection.html) and a set of other interfaces.+* **Group** `io.r2dbc`+* **Artifact** `r2dbc-spi`+

May wish to be consistent on apply strong and code formatting.

fifthposition

comment created time in 17 days

Pull request review commentr2dbc/r2dbc.github.io

Edit / polish website content

 permalink: /drivers/  # Service Provider Interface (SPI) -R2DBC defines an SPI all data store drivers must implement:+R2DBC defines an SPI all data store drivers must implement. -* [r2dbc-spi](https://github.com/r2dbc/r2dbc-spi) - set of interfaces defining the SPI for R2DBC.-* [r2dbc-spi-test](https://github.com/r2dbc/r2dbc-spi/tree/master/r2dbc-spi-test) - a **Technology Compatibility Kit (TCK)** contained within the SPI repository for verifying your driver's implementation.+* [r2dbc-spi](https://github.com/r2dbc/r2dbc-spi): a set of interfaces defining the SPI for R2DBC.+* [r2dbc-spi-test](https://github.com/r2dbc/r2dbc-spi/tree/master/r2dbc-spi-test): within the SPI repository, a Technology Compatibility Kit (TCK) for verifying a driver's implementation. -One noticeable difference between R2DBC and JDBC is that JDBC is aimed at both driver writers as well as application developers. Drivers and applications operate on different levels, making this one-size-fits-all less than ideal.+One noticeable difference between R2DBC and JDBC is that JDBC is aimed at both driver writers and application developers. Driver developers and application developers operate at different levels, making this one-size-fits-all model less than ideal. -R2DBC's SPI is deliberately designed to be as small as possible while still capturing critical features for ANY relational data store. This means that data store specific extensions are not targeted by the SPI.+R2DBC's SPI is deliberately designed to be as small as possible, while still including features critical for _any_ relational data store. This means that the SPI does not target extensions which are specific to a data store. -And to ease implementation, a test interface, a veritable TCK, is provided to ensure you are fully operational.+To ease implementation, R2DBC also provides a test interface (a veritable TCK) to ensure your driver is fully operational.  # Existing Drivers -R2DBC drivers implements the SPI listed above. The ones currently supported include:+R2DBC drivers implement the SPI listed above. The ones currently supported include: -* [cloud-spanner-r2dbc](https://github.com/GoogleCloudPlatform/cloud-spanner-r2dbc) - Driver for Google Cloud Spanner.-* [jasync-sql](https://github.com/jasync-sql/jasync-sql) - R2DBC wrapper for Java & Kotlin Async Database Driver for MySQL and PostgreSQL written in Kotlin.-* [r2dbc-h2](https://github.com/r2dbc/r2dbc-h2) - Native driver implemented for H2 as a test database.-* [r2dbc-postgres](https://github.com/r2dbc/r2dbc-postgresql) - Native driver implemented for PostgreSQL.-* [r2dbc-mssql](https://github.com/r2dbc/r2dbc-mssql) - Native driver implemented for Microsoft SQL Server.-* [r2dbc-mysql](https://github.com/mirromutth/r2dbc-mysql) - Native driver implemented for MySQL.+* [cloud-spanner-r2dbc](https://github.com/GoogleCloudPlatform/cloud-spanner-r2dbc) - driver for Google Cloud Spanner.+* [jasync-sql](https://github.com/jasync-sql/jasync-sql) - R2DBC wrapper for Java & Kotlin Async Database Driver for MySQL and PostgreSQL (written in Kotlin).+* [r2dbc-h2](https://github.com/r2dbc/r2dbc-h2) - native driver implemented for H2 as a test database.+* [r2dbc-postgres](https://github.com/r2dbc/r2dbc-postgresql) - native driver implemented for PostgreSQL.+* [r2dbc-mssql](https://github.com/r2dbc/r2dbc-mssql) - native driver implemented for Microsoft SQL Server.+* [r2dbc-mysql](https://github.com/mirromutth/r2dbc-mysql) - native driver implemented for MySQL.  # Connection Pooling  The following connection pool implementations are available for R2DBC: -* [r2dbc-pool](https://github.com/r2dbc/r2dbc-pool) - Reactive connection pooling using Reactor Pool.+* [r2dbc-pool](https://github.com/r2dbc/r2dbc-pool) - reactive connection pooling using Reactor Pool. -# Implementing a driver+# Implementing a Driver -R2DBC has a clearly defined **SPI** you must implement to host a solution for your data store. To build an implementation, add the following artifact to your build:+R2DBC has a clearly-defined SPI, which you must implement to host a solution for your data store. To build an implementation, add the following artifact to your build: -* Group: **io.r2dbc**-* Artifact: **r2dbc-spi**+* <strong>Group</strong> <code>io.r2dbc</code>+* <strong>Artifact</strong> <code>r2dbc-spi</code> -The key interface all driver providers must implement is the [`Connection`](https://r2dbc.io/spec/0.8.0.RELEASE/api/io/r2dbc/spi/Connection.html) and a set of other interfaces.+* **Group** `io.r2dbc`+* **Artifact** `r2dbc-spi`++The key interface that all driver providers must implement is the [`Connection`](https://r2dbc.io/spec/0.8.0.RELEASE/api/io/r2dbc/spi/Connection.html), along with a set of other interfaces. Check out the specification for details on [R2DBC Driver Compliance](/spec/0.8.0.RELEASE/spec/html/#compliance).

Again, we're now at 0.8.1.RELEASE.

fifthposition

comment created time in 17 days

issue commentspring-projects/spring-hateoas

Question: is it possible to change the default response content-type to be application/json instead of application/hal+json?

No. Submit a wildcard and it will send it’s preferred media type.

adamvelo

comment created time in 17 days

push eventspring-projects/spring-hateoas

Greg Turnquist

commit sha 1506dfd154940f289ff788a833ee6dfc3c12b170

#1107 - Upgrade to Spring Framework 5.2.1.RELEASE.

view details

Greg Turnquist

commit sha 667a4f4970617327f810e289514df8c100c34dbc

#1109 - Upgrade to Reactor Dysprosium-SR1.

view details

Greg Turnquist

commit sha 37e1f501cf0fcec991d80f2e7df7b36d10a2be61

#1111 - Add 1.0.1.RELEASE to changelog.txt.

view details

Oliver Drotbohm

commit sha d0198d5ff5a56196c4582c6784d4b5378be65bee

#1118 - Switch to ConcurrentReferenceHashMap to cache UriTemplate instances. We now use Spring's ConcurrentReferenceHashMap to keep instances of UriTemplate cached but at the same time allow the cache entries to be garbage collected if necessary.

view details

Oliver Drotbohm

commit sha fc42597091e427563d317dd8623ee1284d07896b

#1118 - Polishing. Removed unnecessary log output from integration tests.

view details

Oliver Drotbohm

commit sha aa9e4498414541172d9c4cab9ba15b6830e4dab9

#1121 - Shortcut ignored property lookups to prevent NullPointerExceptions.

view details

Oliver Drotbohm

commit sha 3d9fe3893f550e2d97608ac933580560c5544172

#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.

view details

Oliver Drotbohm

commit sha 5444e140176ad97cf6cb119c691fb90e9b9be996

#1122 - Polishing.

view details

Oliver Drotbohm

commit sha 5f016d6c9ee6d7348b6c8291ffc6d9ade96b626f

#1119 - Avoid reference to spring-webmvc in configuration for RestTemplate. RestTemplateHateoasConfiguration previously referred to HypermediaWebMvcConfigurer which is turn depending on WebMvcConfigurer, a type living in spring-webmvc. The very former would still get active in WebFlux as the web stack is selected based on the presence of either DispatcherServlet or DispatcherHandler. This is now resolved by using a WebMvcConverter indrection to handle the configuration tweaks avoiding the reference to interfaces from spring-webmvc. Introduced an ArchUnit based test that Spring HATEOAS code only depends on Spring types containing references to reactive types from either the ….reactive package or classes starting with WebFlux.

view details

Oliver Drotbohm

commit sha d3ece765bc969bb4b38af0233043a7019757b5a4

#1127 - Avoid double encoding in UriTemplate. We now directly use UriComponentsBuilder in UriTemplate.expand(…) to avoid potential double encoding in the base URI.

view details

Oliver Drotbohm

commit sha d98e678c591cdfd56896f7e95b07d471a341a733

#593 - Make UriTemplate smarter to avoid reencoding of given URI strings. UriTemplate now uses UriBuilderFactory (DefaultUriBuilderFactory in particular) to expand templates. We inspect the given source URI string, try to decode it and configure the factory to only encode values if the decoded String is shorter than the source one as that indicates it already contains encoded characters. The UriBuilderFactory is held as transient value as its implementations are usually not serializable in the first place. Added the necessary logic to recreate the factory instance on deserialization. Added all expansion tests given in the original ticket as unit tests.

view details

Oliver Drotbohm

commit sha 5ae89bcb2ca869fc527ed485ea5513ffa5a2124c

#593 - Polishing. Refactored existing unit tests to use the newly introduced test fixture type. Refactored ticket references to use the current style.

view details

Greg Turnquist

commit sha 17543fc4fa47db432f4fe54fe8f65bd659baab06

#1119 - Include WebMvcConverters in WebFluxHateoasConfiguration.

view details

Oliver Drotbohm

commit sha a630a43c28ee642ce592cd24560e1661e0f4dfeb

#1119 - Moved WebConverters bean declaration into common HateoasConfiguration. RestTemplateHateoasConfiguration depends on a shared bean WebConverters (previously WebMvcConverters). As it can safely be used in both WebFlux and WebMVC scenarios (as it only depends on types from spring-web), we now include a declaration in the shared HateoasConfiguration. This also allows us to remove the just introduced explicit declaration of a WebConverter bean in WebFluxHateoasConfiguration.

view details

YAN Wenkun

commit sha 3d6e845509385af866f09f594abce1d6f6cbf1ae

#1133 - Fix package name vnderror to vnderrors in migration script.

view details

Oliver Drotbohm

commit sha f6a4e650068360e5da8319a51dcf9c961c8c56fa

#1138 - Upgrade to Spring Framework 5.2.2 snapshots.

view details

Oliver Drotbohm

commit sha 3127c97ba92f41f635af15488a054f1c620c4c59

#1134 - Make sure we don't accidentally drop customizations made to WebClient. We now use the API introduced in Spring Framework 5.2.2 to customize a WebClient to add hypermedia related en- and decoders without dropping customizations potentially made to the WebClient instance.

view details

Oliver Drotbohm

commit sha 86ad689f5d248dc3fca51059d3cc9d23693dc032

#1138 - Upgrade to Spring Framework 5.2.2 release.

view details

Oliver Drotbohm

commit sha 8befce38e47478953310b15c411107d0aa556007

#1134 - Forward global codec settings to decoders in WebClientConfigurer. We now use new API introduced in Spring Framework 5.2.2 to forward the global configuration settings into the hypermedia decoders we register.

view details

Greg Turnquist

commit sha 9f05bea8ab6b8e90404b2b6579ab12c8cd631354

#1138 - Polishing.

view details

push time in 17 days

issue commentspring-projects/spring-hateoas

Add a contentType property to the HAL-FORMS template element automatically or by hand

@odrotbohm the HAL-FORMS spec has been expanded such that other media types may be plugged into the contentType field. I'll check the status of the branch involving this work and see if it can't be cleaned up and reviewed.

ingogriebsch

comment created time in 17 days

issue closedmamund/hal-forms

Expand `contentType` to support other media types

Can we lift the restriction on contentType and let it support, well, any media type?

People are wanting to create REST endpoints with Spring HATEAOS that can receive application/hal+json on a PUT, and wondering why they can't put that in their HAL-FORMS documents under contentType.

closed time in 17 days

gregturn

issue commentmamund/hal-forms

Expand `contentType` to support other media types

Seeing this change in the spec, I am closing this issues as resolved. Thanks @mamund!

gregturn

comment created time in 17 days

issue commentspring-projects/spring-hateoas

Question: is it possible to change the default response content-type to be application/json instead of application/hal+json?

I'm sorry. I completely misread this property.

What spring.hateoas.use-hal-as-default-json-media-type=true does (whereby true is the default value), is that is you serve up a hypermedia endpoint, should anAccept: application/json` header still cause the server to yield HAL?

The answer is: yes!

Essentially, if you leave out the property entirely, then this should work nicely.

$ curl -v localhost:8080/foo -H 'Accept: application/json' | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8080 (#0)
> GET /foo HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.54.0
> Accept: application/json
> 
< HTTP/1.1 200 
< Content-Type: application/json
< Transfer-Encoding: chunked
< Date: Thu, 06 Feb 2020 03:00:51 GMT
< 
{ [78 bytes data]
100    72    0    72    0     0    379      0 --:--:-- --:--:-- --:--:--   380
* Connection #0 to host localhost left intact
{
  "content": "foo",
  "_links": {
    "self": {
      "href": "http://localhost:8080/foo"
    }
  }
}

P.S. I submitted a PR to your demo project that adds a link to nicely illustrate things. (https://github.com/adamvelo/haldemo/pull/1

adamvelo

comment created time in 17 days

PR opened adamvelo/haldemo

Demonstrate the HAL serving feature.
+7 -5

0 comment

3 changed files

pr created time in 17 days

create barnchgregturn/haldemo

branch : fix

created branch time in 17 days

issue commentspring-projects/spring-hateoas

How to generate link with with optional hyphenated parameter?

We use UriTemplate to handle the incoming URIs for Link (as shown below):

public Link(String href, LinkRelation rel) {
	this(UriTemplate.of(href), rel);
}

This is primarily because Java's standard URI and URL types were never built for such usage and thus don't have very flexible APIs.

Because we generate both finished links as well as templated links, UriTemplate has been built from the ground up to handle such an intermediate state.

I appreciate you having researched the fact that dashes cannot be variable names in a UriTemplate. But frankly, I'm uncertain about going into the guts of Link and building a special case for when the user supplies this sort of URI that is almost a template, but not quite.

Thoughts @odrotbohm?

aznan2

comment created time in 17 days

create barnchspring-projects/spring-hateoas

branch : issue/HATEAOS-1172

created branch time in 17 days

delete branch spring-projects/spring-hateoas

delete branch : issue/HATEOAS-1183

delete time in 18 days

push eventspring-projects/spring-hateoas

Greg Turnquist

commit sha 1b5a344aad6e1adee8f10d61c0a6f55d39345288

#1191 - Backport @ExposesResourceFor into the migration script. Related issue: #1183

view details

push time in 18 days

issue commentspring-projects/spring-hateoas

Backport migration support for @ExposesResourceFor

Related: #1183

gregturn

comment created time in 18 days

issue closedspring-projects/spring-hateoas

Migration script doesn't cover @ExposesResourceFor

Just ran the migration script, worked like a charm, but i had to fix the @ExposesResourceFor imports by hand.

closed time in 18 days

franz-newsadoo

push eventspring-projects/spring-hateoas

Greg Turnquist

commit sha c33d8d42ffadb602317e6f270d36f48ac4fb6ea9

#1183 - Add @ExposesResourceFor to migration script.

view details

push time in 18 days

create barnchspring-projects/spring-hateoas

branch : issue/HATEOAS-1183

created branch time in 18 days

issue commentspring-projects/spring-hateoas

WebFluxLinkBuilder does not resolve URI params declared in interfaces

Makes sense given support for Spring Web itself in https://github.com/spring-projects/spring-framework/issues/15682.

krraghavan

comment created time in 18 days

issue commentspring-projects/spring-hateoas

WebFluxLinkBuilder does not resolve URI params declared in interfaces

You have an interface with @RequestParam but not the implementation itself?

krraghavan

comment created time in 18 days

delete branch spring-projects/spring-hateoas

delete branch : issue/1119

delete time in 18 days

delete branch spring-projects/spring-hateoas

delete branch : issue/HATEOAS-1119

delete time in 18 days

push eventr2dbc/r2dbc.github.io

Greg Turnquist

commit sha 1dda271e02778fa258b44c1e9adec6b9c0827e27

Release Arabba-SR2.

view details

push time in 20 days

issue closedr2dbc/r2dbc-mssql

Release 0.8.1.RELEASE

closed time in 20 days

mp911de

created tagspring-projects/spring-ws

tagv3.0.8.RELEASE

Spring Web Services

created time in 20 days

push eventspring-projects/spring-ws

Greg Turnquist

commit sha c6765de08203695b6218624cceef7324d89ca5ae

Releasing Spring Web Services v3.0.8.RELEASE

view details

Greg Turnquist

commit sha 93a2c980f421a6b33787089e5a858827e1660556

Continue development on v3.0.9.BUILD-SNAPSHOT

view details

push time in 20 days

created tagr2dbc/r2dbc-proxy

tagv0.8.1.RELEASE

R2DBC Proxying Framework

created time in 22 days

more