[MAGNOLIA-8323] NullPointerException when using more than one underscore in URI Created: 25/Feb/22  Updated: 04/Jul/22  Resolved: 03/Mar/22

Status: Closed
Project: Magnolia
Component/s: None
Affects Version/s: 6.2.17
Fix Version/s: 6.2.18

Type: Bug Priority: Blocker
Reporter: Jonathan Ayala Assignee: Jaroslav Simak
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
causality
duplicate
is duplicated by MAGNOLIA-8325 NullPointerException in IsLocaleValid... Closed
Template:
Acceptance criteria:
Empty
Task DoD:
[X]* Doc/release notes changes? Comment present?
[X]* Downstream builds green?
[X]* Solution information and context easily available?
[X]* Tests
[X]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled
Date of First Response:
Epic Link: Support
Sprint: DevX 5
Story Points: 3
Team: DeveloperX

 Description   

Steps to reproduce

  1. Go to pages app and create a page with name this_is_a_test (3 underscores are used)
  2. Press preview as visitor

Expected results

Preview is correctly shown

Actual results

An error occurs caused by a NullPointerException

Development notes

The error is caused because info.magnolia.cms.i18n.AbstractI18nContentSupport.determineLocalFromString(String) initialises the locale object if and only if the passed localStr contains no/one underscore. Therefore, when more than one underscore is used, a null value is returned causing a NullPointerException when used in info.magnolia.cms.i18n.IsLocaleValid.apply(Locale)

Complete stack trace of the exception:

java.lang.NullPointerException
	info.magnolia.cms.i18n.IsLocaleValid.apply(IsLocaleValid.java:55)
	info.magnolia.cms.i18n.AbstractI18nContentSupport.determineLocalFromString(AbstractI18nContentSupport.java:173)
	info.magnolia.cms.i18n.DefaultI18nContentSupport.onDetermineLocale(DefaultI18nContentSupport.java:79)
	info.magnolia.cms.i18n.AbstractI18nContentSupport.determineLocale(AbstractI18nContentSupport.java:148)
	info.magnolia.multisite.filters.MultiSiteFilter.removeLocaleFromUri(MultiSiteFilter.java:233)
	info.magnolia.multisite.filters.MultiSiteFilter.cleanURI(MultiSiteFilter.java:166)
	info.magnolia.multisite.filters.MultiSiteFilter.doFilter(MultiSiteFilter.java:110)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
	info.magnolia.cms.filters.MultiChannelFilter.doFilter(MultiChannelFilter.java:83)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
	info.magnolia.sitemesh.webapp.MagnoliaSiteMeshFilter.bufferAndPostProcess(MagnoliaSiteMeshFilter.java:95)
	org.sitemesh.webapp.contentfilter.ContentBufferingFilter.doFilter(ContentBufferingFilter.java:126)
	org.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:120)
	org.sitemesh.config.ConfigurableSiteMeshFilter.doFilter(ConfigurableSiteMeshFilter.java:163)
	info.magnolia.sitemesh.config.MagnoliaConfigurableSiteMeshFilter.doFilter(MagnoliaConfigurableSiteMeshFilter.java:92)
	info.magnolia.cms.filters.FilterDecorator.doFilter(FilterDecorator.java:90)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
	info.magnolia.module.cache.filter.GZipFilter.doFilter(GZipFilter.java:74)
	info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
	info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:128)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
	info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:91)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:74)
	info.magnolia.cms.security.CsrfTokenFilterBase.doFilter(CsrfTokenFilterBase.java:99)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
	info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:75)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
	info.magnolia.cms.filters.MultipartRequestFilter.doFilter(MultipartRequestFilter.java:151)
	info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
	info.magnolia.personalization.preview.filter.PreviewFilter.doFilter(PreviewFilter.java:92)
	info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
	info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:155)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
	info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:128)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
	info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:75)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	info.magnolia.cms.filters.SafeDestroyMgnlFilterWrapper.doFilter(SafeDestroyMgnlFilterWrapper.java:107)
	info.magnolia.cms.filters.MgnlFilterDispatcher.doDispatch(MgnlFilterDispatcher.java:67)
	info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:110)
	info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:96)
 


 Comments   
Comment by Anne Meister [ 07/Apr/22 ]

Is there a timeline for the release / possibility for a hotfix release with this fix?

Comment by Jaroslav Simak [ 07/Apr/22 ]

Hi,

Magnolia 6.2.18 with the fix will be released on April 15th latest.

Best Regards.

Comment by Anne Meister [ 07/Apr/22 ]

Thx Jaroslav!

Generated at Mon Feb 12 04:31:41 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.