diff --git a/dotCMS/src/main/java/com/dotcms/vanityurl/business/VanityUrlAPIImpl.java b/dotCMS/src/main/java/com/dotcms/vanityurl/business/VanityUrlAPIImpl.java index 4fc2eb35d299..eee8a15c94a0 100644 --- a/dotCMS/src/main/java/com/dotcms/vanityurl/business/VanityUrlAPIImpl.java +++ b/dotCMS/src/main/java/com/dotcms/vanityurl/business/VanityUrlAPIImpl.java @@ -105,7 +105,7 @@ private void populateVanityURLsCacheBySite(final Host site) { List vanitiesAllLanguages = findInDb(site); - Logger.info(this.getClass(), String.format("Populating " +vanitiesAllLanguages.size() + " Vanity URLs for Site '%s'", site.getHostname())); + Logger.info(this.getClass(), "Populating " +vanitiesAllLanguages.size() + " Vanity URLs for Site " + site.getHostname()); for (final Language language : languageAPI.getLanguages()) { @@ -115,7 +115,7 @@ private void populateVanityURLsCacheBySite(final Host site) { @Override public void populateAllVanityURLsCache() throws DotDataException { - for (final Host site : Try.of(() -> APILocator.getHostAPI().findAllFromDB(APILocator.systemUser(), false)).getOrElse(ImmutableList.of())) { + for (final Host site : Try.of(() -> APILocator.getHostAPI().findAllFromDB(APILocator.systemUser(), false)).getOrElse(List.of())) { populateVanityURLsCacheBySite(site); } populateVanityURLsCacheBySite(APILocator.getHostAPI().findSystemHost()); @@ -125,13 +125,6 @@ public void populateAllVanityURLsCache() throws DotDataException { @Override public List findInDb(Host site, Language language) { - if (!UtilMethods.isSet(site) || !UtilMethods.isSet(site.getIdentifier())) { - return List.of(); - } - if (language == null) { - return List.of(); - } - return findInDb(site).stream().filter(v -> v.languageId == language.getId()).collect(Collectors.toList()); } @@ -150,47 +143,49 @@ public List findInDb(Host site, Language language) { @CloseDBIfOpened public List findInDb(final Host site) { - try { - if (!UtilMethods.isSet(site) || !UtilMethods.isSet(site.getIdentifier())) { - return List.of(); + return List.of(); + } + + + try { + + final List> vanityUrls = new DotConnect() + .setSQL(SELECT_LIVE_VANITY_URL_INODES) + .addParam(site.getIdentifier()) + .loadObjectResults(); + + final List vanityUrlInodes = + vanityUrls + .stream() + .map(vanity -> vanity.get("live_inode").toString()) + .collect(Collectors.toList()); + + final List contentlets = this.contentletAPI + .findContentlets(vanityUrlInodes) + .stream() + .filter(contentlet -> site.getIdentifier().equals(contentlet.getHost())) + .collect(Collectors.toList()); + + return contentlets + .stream().map(contentlet -> { + try { + return new CachedVanityUrl(this.fromContentlet(contentlet)); + } catch (DotStateException e) { + Logger.error(VanityUrlAPIImpl.class, + String.format("Validation error loading vanityURL[%S] from db.", contentlet.getIdentifier()), + e); + } + return null; + }).filter(Objects::nonNull) + .sorted() + .collect(Collectors.toList()); + + } catch (final Exception e) { + Logger.error(this, String.format("An error occurred when retrieving Vanity URLs: siteId=[%s]", site.getIdentifier()), + e); + throw new DotStateException(e); } - - final List> vanityUrls = new DotConnect().setSQL( - SELECT_LIVE_VANITY_URL_INODES) - .addParam(site.getIdentifier()) - .loadObjectResults(); - - final List vanityUrlInodes = - vanityUrls.stream() - .map(vanity -> vanity.get("live_inode").toString()) - .collect(Collectors.toList()); - - final List contentlets = this.contentletAPI.findContentlets(vanityUrlInodes) - .stream() - .filter(contentlet -> - site.getIdentifier().equals(contentlet.getHost())) - .collect(Collectors.toList()); - - return contentlets.stream().map(contentlet -> { - try { - return new CachedVanityUrl(this.fromContentlet(contentlet)); - } catch (DotStateException e) { - Logger.error(VanityUrlAPIImpl.class, - String.format("Validation error loading vanityURL[%S] from db.", - contentlet.getIdentifier()), e); - } - return null; - }).filter(Objects::nonNull).sorted().collect(Collectors.toList()); - - } catch (final Exception e) { - Logger.error(this, - String.format( - "An error occurred when retrieving Vanity URLs: siteId=[%s]", - site.getIdentifier()), - e); - throw new DotStateException(e); - } } @@ -218,7 +213,8 @@ public Optional resolveVanityUrl(final String url, final Host s // 404 short circuit final Optional shortCircuit = cache.getDirectMapping(url, site, language); - if(shortCircuit!=null) { + + if(shortCircuit!=null) { //NOSONAR return shortCircuit; }