Taiga#457: improve bookingitem resource mapping error message (#218)
Co-authored-by: Michael Hoennig <michael@hoennig.de> Reviewed-on: https://dev.hostsharing.net/hostsharing/hs.hsadmin.ng/pulls/218 Reviewed-by: Marc Sandlus <hsh-marcsandlus@noreply.dev.hostsharing.net>
This commit is contained in:
+1
-1
@@ -174,6 +174,6 @@ public class HsBookingItemController implements HsBookingItemsApi {
|
||||
.map(parentItemUuid -> em.find(HsBookingItemRealEntity.class, parentItemUuid))
|
||||
.ifPresent(entity::setParentItem);
|
||||
entity.setValidity(toPostgresDateRange(LocalDate.now(), resource.getValidTo()));
|
||||
entity.putResources(KeyValueMap.from(resource.getResources()));
|
||||
entity.putResources(KeyValueMap.from("resources", resource.getResources()));
|
||||
};
|
||||
}
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ public class HsBookingItemEntityPatcher implements EntityPatcher<HsBookingItemPa
|
||||
OptionalFromJson.of(resource.getCaption())
|
||||
.ifPresent(entity::setCaption);
|
||||
Optional.ofNullable(resource.getResources())
|
||||
.ifPresent(r -> entity.getResources().patch(KeyValueMap.from(resource.getResources())));
|
||||
.ifPresent(r -> entity.getResources().patch(KeyValueMap.from("resources", resource.getResources())));
|
||||
OptionalFromJson.of(resource.getValidTo())
|
||||
.ifPresent(entity::setValidTo);
|
||||
}
|
||||
|
||||
+1
-1
@@ -155,7 +155,7 @@ public class HsHostingAssetController implements HsHostingAssetsApi {
|
||||
}
|
||||
|
||||
final BiConsumer<HsHostingAssetInsertResource, HsHostingAssetRbacEntity> RESOURCE_TO_ENTITY_POSTMAPPER = (resource, entity) -> {
|
||||
entity.putConfig(KeyValueMap.from(resource.getConfig()));
|
||||
entity.putConfig(KeyValueMap.from("config", resource.getConfig()));
|
||||
if (resource.getBookingItemUuid() != null) {
|
||||
entity.setBookingItem(realBookingItemRepo.findByUuid(resource.getBookingItemUuid())
|
||||
.orElseThrow(() -> new EntityNotFoundException("ERROR: [400] bookingItemUuid %s not found".formatted(
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ public class HsHostingAssetEntityPatcher implements EntityPatcher<HsHostingAsset
|
||||
OptionalFromJson.of(resource.getCaption())
|
||||
.ifPresent(entity::setCaption);
|
||||
Optional.ofNullable(resource.getConfig())
|
||||
.ifPresent(r -> entity.getConfig().patch(KeyValueMap.from(resource.getConfig())));
|
||||
.ifPresent(r -> entity.getConfig().patch(KeyValueMap.from("config", resource.getConfig())));
|
||||
OptionalFromJson.of(resource.getAlarmContactUuid())
|
||||
// HOWTO: patch nullable JSON resource uuid to an ntity reference
|
||||
.ifPresent(newValue -> entity.setAlarmContact(
|
||||
|
||||
+3
-3
@@ -19,10 +19,10 @@ class HsOfficeContactEntityPatcher implements EntityPatcher<HsOfficeContactPatch
|
||||
public void apply(final HsOfficeContactPatchResource resource) {
|
||||
OptionalFromJson.of(resource.getCaption()).ifPresent(entity::setCaption);
|
||||
Optional.ofNullable(resource.getPostalAddress())
|
||||
.ifPresent(r -> entity.getPostalAddress().patch(KeyValueMap.from(resource.getPostalAddress())));
|
||||
.ifPresent(r -> entity.getPostalAddress().patch(KeyValueMap.from("postalAddress", resource.getPostalAddress())));
|
||||
Optional.ofNullable(resource.getEmailAddresses())
|
||||
.ifPresent(r -> entity.getEmailAddresses().patch(KeyValueMap.from(resource.getEmailAddresses())));
|
||||
.ifPresent(r -> entity.getEmailAddresses().patch(KeyValueMap.from("emailAddresses", resource.getEmailAddresses())));
|
||||
Optional.ofNullable(resource.getPhoneNumbers())
|
||||
.ifPresent(r -> entity.getPhoneNumbers().patch(KeyValueMap.from(resource.getPhoneNumbers())));
|
||||
.ifPresent(r -> entity.getPhoneNumbers().patch(KeyValueMap.from("phoneNumbers", resource.getPhoneNumbers())));
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -19,9 +19,9 @@ public class HsOfficeContactFromResourceConverter<E extends HsOfficeContact>
|
||||
final var resource = context.getSource();
|
||||
final var entity = context.getDestinationType().getDeclaredConstructor().newInstance();
|
||||
entity.setCaption(resource.getCaption());
|
||||
entity.putPostalAddress(from(resource.getPostalAddress()));
|
||||
entity.putEmailAddresses(from(resource.getEmailAddresses()));
|
||||
entity.putPhoneNumbers(from(resource.getPhoneNumbers()));
|
||||
entity.putPostalAddress(from("postalAddress", resource.getPostalAddress()));
|
||||
entity.putEmailAddresses(from("emailAddresses", resource.getEmailAddresses()));
|
||||
entity.putPhoneNumbers(from("phoneNumbers", resource.getPhoneNumbers()));
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -184,8 +184,8 @@ public class HsOfficeRelationController implements HsOfficeRelationsApi {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
final BiConsumer<HsOfficeContactInsertResource, HsOfficeContactRealEntity> CONTACT_RESOURCE_TO_ENTITY_POSTMAPPER = (resource, entity) -> {
|
||||
entity.putPostalAddress(from(resource.getPostalAddress()));
|
||||
entity.putEmailAddresses(from(resource.getEmailAddresses()));
|
||||
entity.putPhoneNumbers(from(resource.getPhoneNumbers()));
|
||||
entity.putPostalAddress(from("postalAddress", resource.getPostalAddress()));
|
||||
entity.putEmailAddresses(from("emailAddresses", resource.getEmailAddresses()));
|
||||
entity.putPhoneNumbers(from("phoneNumbers", resource.getPhoneNumbers()));
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
package net.hostsharing.hsadminng.mapper;
|
||||
|
||||
import jakarta.validation.ValidationException;
|
||||
import java.util.Map;
|
||||
|
||||
public class KeyValueMap {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> Map<String, T> from(final Object obj) {
|
||||
public static <T> Map<String, T> from(final String key, final Object obj) {
|
||||
if (obj == null || obj instanceof Map<?, ?>) {
|
||||
return (Map<String, T>) obj;
|
||||
}
|
||||
throw new ClassCastException("Map expected, but got: " + obj);
|
||||
throw new ValidationException(key + ": Map expected, but got: " + obj);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user