From 231138728bf482cdad898877d638a2111add1091 Mon Sep 17 00:00:00 2001 From: vercel-talented Date: Fri, 3 Sep 2021 20:40:00 +0300 Subject: [PATCH] Improve generated code for Pageable (#11729) --- .../EndpointTransferMapper.java | 2 +- .../endpointransfermapper/PageableMapper.java | 40 ++++++------ .../endpointransfermapper/SortMapper.java | 61 ++++++++++--------- .../OrderDTO.java => mappedtypes/Order.java} | 7 +-- .../Pageable.java} | 14 ++--- .../SortDTO.java => mappedtypes/Sort.java} | 14 ++--- .../EndpointTransferMapperTest.java | 50 ++++++++------- .../AbstractEndpointGenerationTest.java | 6 +- .../mappedtype/expected-MappedTypeEndpoint.ts | 8 +-- 9 files changed, 106 insertions(+), 96 deletions(-) rename packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/{endpointransfermapper/OrderDTO.java => mappedtypes/Order.java} (91%) rename packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/{endpointransfermapper/PageableDTO.java => mappedtypes/Pageable.java} (79%) rename packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/{endpointransfermapper/SortDTO.java => mappedtypes/Sort.java} (72%) diff --git a/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/EndpointTransferMapper.java b/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/EndpointTransferMapper.java index 8fc9e5e5..0b7be3a5 100644 --- a/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/EndpointTransferMapper.java +++ b/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/EndpointTransferMapper.java @@ -48,7 +48,7 @@ * generates a TypeScript and converts data as if the method was defined as *

* - * public List<Person> list(PageableDTO pageable) { + * public List<Person> list(com.vaadin.fusion.mappedtypes.Pageable pageable) { * } * * diff --git a/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/PageableMapper.java b/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/PageableMapper.java index 4c716ae3..2be28e5d 100644 --- a/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/PageableMapper.java +++ b/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/PageableMapper.java @@ -16,41 +16,45 @@ package com.vaadin.fusion.endpointransfermapper; import com.vaadin.fusion.endpointransfermapper.EndpointTransferMapper.Mapper; +import com.vaadin.fusion.mappedtypes.Pageable; import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; /** - * A mapper between {@link Pageable} and {@link PageableDTO}. + * A mapper between {@link Pageable} and {@link Pageable}. */ -public class PageableMapper implements Mapper { +public class PageableMapper + implements Mapper { private SortMapper sortMapper = new SortMapper(); @Override - public Class getEndpointType() { - return Pageable.class; + public Class getEndpointType() { + return org.springframework.data.domain.Pageable.class; } @Override - public Class getTransferType() { - return PageableDTO.class; + public Class getTransferType() { + return Pageable.class; } @Override - public PageableDTO toTransferType(Pageable pageable) { - PageableDTO dto = new PageableDTO(); - dto.setPageNumber(pageable.getPageNumber()); - dto.setPageSize(pageable.getPageSize()); - dto.setSort(sortMapper.toTransferType(pageable.getSort())); - - return dto; + public Pageable toTransferType( + org.springframework.data.domain.Pageable pageable) { + Pageable transferPageable = new Pageable(); + transferPageable.setPageNumber(pageable.getPageNumber()); + transferPageable.setPageSize(pageable.getPageSize()); + transferPageable.setSort(sortMapper.toTransferType(pageable.getSort())); + + return transferPageable; } @Override - public Pageable toEndpointType(PageableDTO dto) { - Sort sort = sortMapper.toEndpointType(dto.getSort()); - return PageRequest.of(dto.getPageNumber(), dto.getPageSize(), sort); + public org.springframework.data.domain.Pageable toEndpointType( + Pageable transferPageable) { + org.springframework.data.domain.Sort sort = sortMapper + .toEndpointType(transferPageable.getSort()); + return PageRequest.of(transferPageable.getPageNumber(), + transferPageable.getPageSize(), sort); } } diff --git a/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/SortMapper.java b/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/SortMapper.java index deda636e..a8bca010 100644 --- a/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/SortMapper.java +++ b/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/SortMapper.java @@ -19,58 +19,61 @@ import java.util.List; import com.vaadin.fusion.endpointransfermapper.EndpointTransferMapper.Mapper; - -import org.springframework.data.domain.Sort; -import org.springframework.data.domain.Sort.Order; +import com.vaadin.fusion.mappedtypes.Order; +import com.vaadin.fusion.mappedtypes.Sort; /** - * A mapper between {@link Sort} and {@link SortDTO}. + * A mapper between {@link org.springframework.data.domain.Sort} and + * {@link Sort}. */ -public class SortMapper implements Mapper { +public class SortMapper + implements Mapper { @Override - public Class getEndpointType() { - return Sort.class; + public Class getEndpointType() { + return org.springframework.data.domain.Sort.class; } @Override - public Class getTransferType() { - return SortDTO.class; + public Class getTransferType() { + return Sort.class; } @Override - public SortDTO toTransferType(Sort sort) { + public Sort toTransferType(org.springframework.data.domain.Sort sort) { - SortDTO sortDto = new SortDTO(); - List orders = new ArrayList<>(); - for (Order order : sort) { - OrderDTO orderDTO = new OrderDTO(); - orderDTO.setProperty(order.getProperty()); - orderDTO.setDirection(order.getDirection()); - orderDTO.setIgnoreCase(order.isIgnoreCase()); - orderDTO.setNullHandling(order.getNullHandling()); - orders.add(orderDTO); + Sort transferSort = new Sort(); + List transferOrders = new ArrayList<>(); + for (org.springframework.data.domain.Sort.Order order : sort) { + Order transferOrder = new Order(); + transferOrder.setProperty(order.getProperty()); + transferOrder.setDirection(order.getDirection()); + transferOrder.setIgnoreCase(order.isIgnoreCase()); + transferOrder.setNullHandling(order.getNullHandling()); + transferOrders.add(transferOrder); } - sortDto.setOrders(orders); - return sortDto; + transferSort.setOrders(transferOrders); + return transferSort; } @Override - public Sort toEndpointType(SortDTO sort) { - if (sort == null) { + public org.springframework.data.domain.Sort toEndpointType( + Sort transferSort) { + if (transferSort == null) { return null; } - List orders = new ArrayList<>(); - for (OrderDTO orderDto : sort.getOrders()) { - Order order = new Order(orderDto.getDirection(), - orderDto.getProperty(), orderDto.getNullHandling()); - if (orderDto.isIgnoreCase()) { + List orders = new ArrayList<>(); + for (Order transferOrder : transferSort.getOrders()) { + org.springframework.data.domain.Sort.Order order = new org.springframework.data.domain.Sort.Order( + transferOrder.getDirection(), transferOrder.getProperty(), + transferOrder.getNullHandling()); + if (transferOrder.isIgnoreCase()) { order = order.ignoreCase(); } orders.add(order); } - return Sort.by(orders); + return org.springframework.data.domain.Sort.by(orders); } } diff --git a/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/OrderDTO.java b/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/mappedtypes/Order.java similarity index 91% rename from packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/OrderDTO.java rename to packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/mappedtypes/Order.java index d3187c16..3fd7a946 100644 --- a/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/OrderDTO.java +++ b/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/mappedtypes/Order.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.fusion.endpointransfermapper; +package com.vaadin.fusion.mappedtypes; import javax.validation.constraints.NotBlank; @@ -21,12 +21,11 @@ import org.springframework.data.domain.Sort.Direction; import org.springframework.data.domain.Sort.NullHandling; -import org.springframework.data.domain.Sort.Order; /** - * A DTO for {@link Order}. + * A DTO for {@link org.springframework.data.domain.Sort.Order}. */ -public class OrderDTO { +public class Order { @Nonnull private Direction direction; @Nonnull diff --git a/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/PageableDTO.java b/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/mappedtypes/Pageable.java similarity index 79% rename from packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/PageableDTO.java rename to packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/mappedtypes/Pageable.java index 5122f54d..8f9a56d4 100644 --- a/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/PageableDTO.java +++ b/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/mappedtypes/Pageable.java @@ -13,20 +13,18 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.fusion.endpointransfermapper; +package com.vaadin.fusion.mappedtypes; import com.vaadin.fusion.Nonnull; -import org.springframework.data.domain.Pageable; - /** - * A DTO for {@link Pageable}. + * A DTO for {@link org.springframework.data.domain.Pageable}. */ -public class PageableDTO { +public class Pageable { private int pageNumber; private int pageSize; @Nonnull - private SortDTO sort = new SortDTO(); + private Sort sort = new Sort(); public int getPageNumber() { return pageNumber; @@ -44,11 +42,11 @@ public void setPageSize(int pageSize) { this.pageSize = pageSize; } - public SortDTO getSort() { + public Sort getSort() { return sort; } - public void setSort(SortDTO sort) { + public void setSort(Sort sort) { this.sort = sort; } diff --git a/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/SortDTO.java b/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/mappedtypes/Sort.java similarity index 72% rename from packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/SortDTO.java rename to packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/mappedtypes/Sort.java index 0c075c3a..98294370 100644 --- a/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/endpointransfermapper/SortDTO.java +++ b/packages/java/fusion-endpoint/src/main/java/com/vaadin/fusion/mappedtypes/Sort.java @@ -13,27 +13,25 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.fusion.endpointransfermapper; +package com.vaadin.fusion.mappedtypes; import java.util.ArrayList; import java.util.List; import com.vaadin.fusion.Nonnull; -import org.springframework.data.domain.Sort; - /** - * A DTO for {@link Sort}. + * A DTO for {@link org.springframework.data.domain.Sort}. */ -public class SortDTO { +public class Sort { @Nonnull - private List orders = new ArrayList<>(); + private List orders = new ArrayList<>(); - public List getOrders() { + public List getOrders() { return orders; } - public void setOrders(List orders) { + public void setOrders(List orders) { this.orders = orders; } diff --git a/packages/java/fusion-endpoint/src/test/java/com/vaadin/fusion/endpointransfermapper/EndpointTransferMapperTest.java b/packages/java/fusion-endpoint/src/test/java/com/vaadin/fusion/endpointransfermapper/EndpointTransferMapperTest.java index dc4cffa3..e87029ce 100644 --- a/packages/java/fusion-endpoint/src/test/java/com/vaadin/fusion/endpointransfermapper/EndpointTransferMapperTest.java +++ b/packages/java/fusion-endpoint/src/test/java/com/vaadin/fusion/endpointransfermapper/EndpointTransferMapperTest.java @@ -4,16 +4,17 @@ import java.util.List; import java.util.UUID; +import com.vaadin.fusion.mappedtypes.Order; +import com.vaadin.fusion.mappedtypes.Pageable; + import org.junit.Assert; import org.junit.Test; import org.springframework.data.domain.AbstractPageRequest; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort.Direction; import org.springframework.data.domain.Sort.NullHandling; -import org.springframework.data.domain.Sort.Order; public class EndpointTransferMapperTest { @@ -21,11 +22,12 @@ public class EndpointTransferMapperTest { @Test public void getTransferTypeClass_works() { - Assert.assertEquals(PageableDTO.class, - endpointTransferMapper.getTransferType(Pageable.class)); - Assert.assertEquals(PageableDTO.class, endpointTransferMapper + Assert.assertEquals(Pageable.class, + endpointTransferMapper.getTransferType( + org.springframework.data.domain.Pageable.class)); + Assert.assertEquals(Pageable.class, endpointTransferMapper .getTransferType(AbstractPageRequest.class)); - Assert.assertEquals(PageableDTO.class, + Assert.assertEquals(Pageable.class, endpointTransferMapper.getTransferType(PageRequest.class)); Assert.assertEquals(List.class, endpointTransferMapper.getTransferType(Page.class)); @@ -37,8 +39,10 @@ public void getTransferTypeClass_works() { @Test public void getTransferTypeString_works() { - Assert.assertEquals(PageableDTO.class.getName(), endpointTransferMapper - .getTransferType(Pageable.class.getName())); + Assert.assertEquals(Pageable.class.getName(), + endpointTransferMapper.getTransferType( + org.springframework.data.domain.Pageable.class + .getName())); // When defining the methods, the defined classes are used to we do not // need to // support e.g. AbstractPageRequest and PageRequest here @@ -60,12 +64,13 @@ public void integer_not_mapped() { @Test public void pageable_simple_toEndpointType() { - PageableDTO dto = new PageableDTO(); + Pageable dto = new Pageable(); dto.setPageNumber(1); dto.setPageSize(2); - Pageable pageable = endpointTransferMapper.toEndpointType(dto, - Pageable.class); + org.springframework.data.domain.Pageable pageable = endpointTransferMapper + .toEndpointType(dto, + org.springframework.data.domain.Pageable.class); Assert.assertEquals(1, pageable.getPageNumber()); Assert.assertEquals(2, pageable.getPageSize()); @@ -74,14 +79,14 @@ public void pageable_simple_toEndpointType() { @Test public void pageable_sortorder_toEndpointType() { - PageableDTO dto = new PageableDTO(); + Pageable dto = new Pageable(); dto.setPageNumber(1); dto.setPageSize(2); - OrderDTO order1 = new OrderDTO(); + Order order1 = new Order(); order1.setDirection(Direction.ASC); order1.setProperty("p1"); - OrderDTO order2 = new OrderDTO(); + Order order2 = new Order(); order2.setDirection(Direction.DESC); order2.setIgnoreCase(true); order2.setNullHandling(NullHandling.NULLS_LAST); @@ -89,8 +94,9 @@ public void pageable_sortorder_toEndpointType() { dto.getSort().getOrders().add(order1); dto.getSort().getOrders().add(order2); - Pageable pageable = endpointTransferMapper.toEndpointType(dto, - Pageable.class); + org.springframework.data.domain.Pageable pageable = endpointTransferMapper + .toEndpointType(dto, + org.springframework.data.domain.Pageable.class); Assert.assertEquals(1, pageable.getPageNumber()); Assert.assertEquals(2, pageable.getPageSize()); @@ -101,8 +107,10 @@ public void pageable_sortorder_toEndpointType() { Assert.assertEquals("p2", pageable.getSort().toList().get(1).getProperty()); - Order p1Order = pageable.getSort().getOrderFor("p1"); - Order p2Order = pageable.getSort().getOrderFor("p2"); + org.springframework.data.domain.Sort.Order p1Order = pageable.getSort() + .getOrderFor("p1"); + org.springframework.data.domain.Sort.Order p2Order = pageable.getSort() + .getOrderFor("p2"); Assert.assertEquals(Direction.ASC, p1Order.getDirection()); Assert.assertEquals(Direction.DESC, p2Order.getDirection()); @@ -114,9 +122,9 @@ public void pageable_sortorder_toEndpointType() { @Test public void pageable_toTransferType() { - Pageable p = Pageable.ofSize(10); - PageableDTO dto = (PageableDTO) endpointTransferMapper - .toTransferType(p); + org.springframework.data.domain.Pageable p = org.springframework.data.domain.Pageable + .ofSize(10); + Pageable dto = (Pageable) endpointTransferMapper.toTransferType(p); Assert.assertEquals(10, dto.getPageSize()); } diff --git a/packages/java/fusion-endpoint/src/test/java/com/vaadin/fusion/generator/endpoints/AbstractEndpointGenerationTest.java b/packages/java/fusion-endpoint/src/test/java/com/vaadin/fusion/generator/endpoints/AbstractEndpointGenerationTest.java index ec70c5af..6e69e5e4 100644 --- a/packages/java/fusion-endpoint/src/test/java/com/vaadin/fusion/generator/endpoints/AbstractEndpointGenerationTest.java +++ b/packages/java/fusion-endpoint/src/test/java/com/vaadin/fusion/generator/endpoints/AbstractEndpointGenerationTest.java @@ -83,11 +83,11 @@ import com.vaadin.fusion.auth.CsrfChecker; import com.vaadin.fusion.auth.FusionAccessChecker; import com.vaadin.fusion.endpointransfermapper.EndpointTransferMapper; -import com.vaadin.fusion.endpointransfermapper.PageableDTO; import com.vaadin.fusion.generator.OpenAPIObjectGenerator; import com.vaadin.fusion.generator.endpoints.complexhierarchymodel.GrandParentModel; import com.vaadin.fusion.generator.endpoints.complexhierarchymodel.Model; import com.vaadin.fusion.generator.endpoints.complexhierarchymodel.ParentModel; +import com.vaadin.fusion.mappedtypes.Pageable; import com.vaadin.fusion.utils.TestUtils; import static com.vaadin.fusion.ExplicitNullableTypeChecker.isRequired; @@ -174,8 +174,8 @@ private void verifyOpenApiObject() { private void removeMapperClasses(Map componentSchemas) { componentSchemas.keySet().removeIf(clsName -> { /* Skip classes that are added because of the mappers */ - if (clsName.startsWith( - PageableDTO.class.getPackage().getName() + ".")) { + if (clsName + .startsWith(Pageable.class.getPackage().getName() + ".")) { return true; } if (Direction.class.getCanonicalName().equals(clsName) diff --git a/packages/java/fusion-endpoint/src/test/resources/com/vaadin/fusion/generator/endpoints/mappedtype/expected-MappedTypeEndpoint.ts b/packages/java/fusion-endpoint/src/test/resources/com/vaadin/fusion/generator/endpoints/mappedtype/expected-MappedTypeEndpoint.ts index d2b3dbfa..598a6181 100644 --- a/packages/java/fusion-endpoint/src/test/resources/com/vaadin/fusion/generator/endpoints/mappedtype/expected-MappedTypeEndpoint.ts +++ b/packages/java/fusion-endpoint/src/test/resources/com/vaadin/fusion/generator/endpoints/mappedtype/expected-MappedTypeEndpoint.ts @@ -5,14 +5,14 @@ */ // @ts-ignore import client from './connect-client.default'; -import type PageableDTO from './com/vaadin/fusion/endpointransfermapper/PageableDTO'; -function _getPageable(): Promise { +import type Pageable from './com/vaadin/fusion/mappedtypes/Pageable'; +function _getPageable(): Promise { return client.call ( 'MappedTypeEndpoint', 'getPageable' ); } function _parameter ( - pageable: PageableDTO | undefined + pageable: Pageable | undefined ): Promise { return client.call ( 'MappedTypeEndpoint', 'parameter', { @@ -20,7 +20,7 @@ function _parameter ( } ); } -function _returnValue(): Promise { +function _returnValue(): Promise { return client.call ( 'MappedTypeEndpoint', 'returnValue' );