[MGNLDIFF-64] Page that doesn't have html tags (head/body) cannot be compared Created: 12/Nov/13  Updated: 04/Mar/14  Resolved: 03/Mar/14

Status: Closed
Project: Magnolia Diff Module
Component/s: None
Affects Version/s: 1.4
Fix Version/s: 1.5.3

Type: Bug Priority: Neutral
Reporter: Jaroslav Simak Assignee: Philip Mundt
Resolution: Fixed Votes: 0
Labels: support
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
relation
Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* 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:

 Description   
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
	java.lang.String.substring(String.java:1911)
	info.magnolia.module.diff.VersionDiffHtmlGenerator.diff(VersionDiffHtmlGenerator.java:80)
	info.magnolia.module.diff.VersionDiffHtmlGenerator.diff(VersionDiffHtmlGenerator.java:96)
	info.magnolia.module.diff.VersionDiffHtmlServlet.getVersionDiffHtml(VersionDiffHtmlServlet.java:244)
	info.magnolia.module.diff.VersionDiffHtmlServlet.doGet(VersionDiffHtmlServlet.java:127)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	info.magnolia.cms.filters.ServletDispatchingFilter.doFilter(ServletDispatchingFilter.java:129)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:67)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.cms.filters.VirtualUriFilter.doFilter(VirtualUriFilter.java:70)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:58)
	info.magnolia.module.cache.executor.CompositeExecutor.processCacheRequest(CompositeExecutor.java:66)
	info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:153)
	info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:76)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.cms.filters.RangeSupportFilter.doFilter(RangeSupportFilter.java:84)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:60)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	info.magnolia.cms.security.SecurityCallbackFilter.doFilter(SecurityCallbackFilter.java:86)
	info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:93)
	info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.module.templatingkit.filters.SiteMergeFilter.doFilter(SiteMergeFilter.java:106)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.multisite.filters.MultiSiteFilter.doFilter(MultiSiteFilter.java:106)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.cms.filters.MultiChannelFilter.doFilter(MultiChannelFilter.java:82)
	info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.module.cache.filter.GZipFilter.doFilter(GZipFilter.java:73)
	info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:104)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:56)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
	info.magnolia.cms.filters.CosMultipartRequestFilter.doFilter(CosMultipartRequestFilter.java:91)
	info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.module.devicedetection.filter.DeviceDetectionFilter.doFilter(DeviceDetectionFilter.java:71)
	info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:102)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:131)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
	info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:67)
	info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
	info.magnolia.cms.filters.SafeDestroyMgnlFilterWrapper.doFilter(SafeDestroyMgnlFilterWrapper.java:108)
	info.magnolia.cms.filters.MgnlFilterDispatcher.doDispatch(MgnlFilterDispatcher.java:67)
	info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:108)
	info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:94)

We should either improve error message and say that pages that have no HTML tags can't be compared or we should allow comparison of such pages.
To allow comparison we would need to improve VersionDiffHtmlGenerator.diff method to also process non html text.



 Comments   
Comment by Philip Mundt [ 22/Nov/13 ]

We're using HTMLDiffer to create diffs of HTML, thus I would vote for making diff more failsafe, rather than "enabling" diff of any format.

Generated at Mon Feb 12 05:21:01 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.