From 28f5fd53f5c01a01427d534aea8dd01a2aeee28b Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Tue, 6 Dec 2022 19:49:00 +0100 Subject: [PATCH] Create placehoders for organizations not found in the database --- .../assets/OrganizationIdResolver.java | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/ccm-cms/src/main/java/org/librecms/assets/OrganizationIdResolver.java b/ccm-cms/src/main/java/org/librecms/assets/OrganizationIdResolver.java index 19c30ae29..d089ac725 100644 --- a/ccm-cms/src/main/java/org/librecms/assets/OrganizationIdResolver.java +++ b/ccm-cms/src/main/java/org/librecms/assets/OrganizationIdResolver.java @@ -24,6 +24,7 @@ import org.libreccm.cdi.utils.CdiUtil; import org.librecms.contentsection.AssetRepository; import java.io.Serializable; +import java.util.Optional; import javax.enterprise.context.RequestScoped; @@ -48,18 +49,26 @@ public class OrganizationIdResolver implements Serializable, ObjectIdResolver { @Override public Object resolveId(final ObjectIdGenerator.IdKey id) { - return CdiUtil - .createCdiUtil() + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final Optional result = cdiUtil .findBean(AssetRepository.class) - .findByUuidAndType(id.key.toString(), Organization.class) - .orElseThrow( - () -> new IllegalArgumentException( - String.format( - "No Organization with UUID %s found in the database", - id.key.toString() - ) - ) + .findByUuidAndType(id.key.toString(), Organization.class); + if (result.isPresent()) { + return result.get(); + } else { + final Organization organization = new Organization(); + organization.setName( + String.format("Placeholder %s", id.key.toString()) ); + final AssetRepository assetRepo = cdiUtil.findBean( + AssetRepository.class + ); + assetRepo.save(organization); + organization.setUuid(id.key.toString()); + assetRepo.save(organization); + + return organization; + } } @Override