Bug 1019013 - RFE: XML validation for fields like Abstract
Summary: RFE: XML validation for fields like Abstract
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: PressGang CCMS
Classification: Community
Component: CCMS-Core
Version: 1.2
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
: 1.3
Assignee: Lee Newson
QA Contact:
URL:
Whiteboard:
Depends On: 1014452
Blocks:
TreeView+ depends on / blocked
 
Reported: 2013-10-15 00:09 UTC by Matthew Casperson
Modified: 2014-08-04 22:27 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2013-12-03 22:16:18 UTC
Embargoed:


Attachments (Terms of Use)

Description Matthew Casperson 2013-10-15 00:09:18 UTC
When XML is incorrectly entered into the Abstract field in a content spec, the issue will not be picked up until Publican fails validation. Ideally we should have the CCMS pick this up when the spec is saved.

Comment 1 Lee Newson 2013-11-05 04:00:38 UTC
Fixed in 1.3-SNAPSHOT build 201311051355

The abstract metadata is now validated in to stages. The first is the pre-validation step which will check that the abstract content is at the very least valid XML. The second step is to validate the abstract against the docbook DTD to make sure it is valid Docbook XML, this step happens during the post-validation.

Note: Abstract is the only metadata that I could see that needed validating at this stage that wasn't already validated/escaped in some way (title and subtitle are done when building)

Comment 2 Lee Newson 2013-11-07 04:10:35 UTC
This version is now live on the dev/test server.

Comment 3 Matthew Casperson 2013-11-24 22:07:57 UTC
Validation words for xml elements and DocBook entities, but the combination of 

Abstract = &TEST;
Entities = [
  <!ENTITY TEST "Hi There">
]

fails validation.

Comment 4 Lee Newson 2013-11-25 01:41:00 UTC
Fixed in 1.3-SNAPSHOT build 201311251126

The validation will now include any custom entities in the validation process.

Note: This version is currently live on the development/test server.

Comment 5 Matthew Casperson 2013-11-25 21:23:13 UTC
When trying custom entities in a subtitle or abstract, I get 

INFO:  The Content Specification is valid.
ERROR: An error occurred during processing please try again and if another failure occurs please log a bug.

Comment 6 Matthew Casperson 2013-11-25 21:26:17 UTC
07:22:14,183 ERROR [org.jboss.pressgang.ccms.contentspec.processor.ContentSpecProcessor] (http-/0.0.0.0:8180-3) An error occurred during processing please try again and if another failure occurs please log a bug.
07:22:31,146 INFO  [org.jboss.pressgang.ccms.contentspec.processor.CustomContentSpecProcessor] (http-/0.0.0.0:8180-3) Starting first validation pass...
07:22:31,513 INFO  [org.jboss.pressgang.ccms.contentspec.processor.CustomContentSpecProcessor] (http-/0.0.0.0:8180-3) Starting bug link validation pass...
07:22:35,175 INFO  [org.jboss.pressgang.ccms.contentspec.processor.CustomContentSpecProcessor] (http-/0.0.0.0:8180-3) Starting second validation pass...
07:22:42,550 INFO  [org.jboss.pressgang.ccms.contentspec.processor.ContentSpecProcessor] (http-/0.0.0.0:8180-3) The Content Specification is valid.
07:22:42,551 INFO  [org.jboss.pressgang.ccms.contentspec.processor.CustomContentSpecProcessor] (http-/0.0.0.0:8180-3) Saving the Content Specification to the server...
07:22:42,585 ERROR [org.jboss.pressgang.ccms.contentspec.processor.CustomContentSpecProcessor] (http-/0.0.0.0:8180-3) : java.lang.NullPointerException
	at org.jboss.pressgang.ccms.contentspec.processor.ContentSpecProcessor.mergeMetaData(ContentSpecProcessor.java:1541) [processor-1.3-SNAPSHOT.jar:]
	at org.jboss.pressgang.ccms.contentspec.processor.ContentSpecProcessor.mergeChildren(ContentSpecProcessor.java:1247) [processor-1.3-SNAPSHOT.jar:]
	at org.jboss.pressgang.ccms.contentspec.processor.ContentSpecProcessor.mergeAndSaveContentSpec(ContentSpecProcessor.java:1108) [processor-1.3-SNAPSHOT.jar:]
	at org.jboss.pressgang.ccms.contentspec.processor.ContentSpecProcessor.saveContentSpec(ContentSpecProcessor.java:460) [processor-1.3-SNAPSHOT.jar:]
	at org.jboss.pressgang.ccms.contentspec.processor.ContentSpecProcessor.processContentSpec(ContentSpecProcessor.java:211) [processor-1.3-SNAPSHOT.jar:]
	at org.jboss.pressgang.ccms.contentspec.processor.ContentSpecProcessor.processContentSpec(ContentSpecProcessor.java:152) [processor-1.3-SNAPSHOT.jar:]
	at org.jboss.pressgang.ccms.contentspec.processor.ContentSpecProcessor.processContentSpec(ContentSpecProcessor.java:124) [processor-1.3-SNAPSHOT.jar:]
	at org.jboss.pressgang.ccms.server.rest.v1.base.BaseRESTv1.processContentSpecString(BaseRESTv1.java:1313) [classes:]
	at org.jboss.pressgang.ccms.server.rest.v1.base.BaseRESTv1.createOrUpdateJSONContentSpecFromString(BaseRESTv1.java:1212) [classes:]
	at org.jboss.pressgang.ccms.server.rest.v1.base.BaseRESTv1.createOrUpdateJSONContentSpecFromString(BaseRESTv1.java:1151) [classes:]
	at org.jboss.pressgang.ccms.server.rest.v1.base.BaseRESTv1.updateJSONContentSpecFromString(BaseRESTv1.java:1087) [classes:]
	at org.jboss.pressgang.ccms.server.rest.v1.RESTv1.updateJSONTextContentSpec(RESTv1.java:2969) [classes:]
	at org.jboss.pressgang.ccms.server.rest.v1.RESTv1$Proxy$_$$_WeldClientProxy.updateJSONTextContentSpec(RESTv1$Proxy$_$$_WeldClientProxy.java) [classes:]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_25]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_25]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_25]
	at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_25]
	at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
	at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
	at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
	at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:216) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
	at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:542) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
	at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
	at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
	at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:163) [javamelody-core-1.44.0.jar:1.44.0]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at org.jboss.pressgang.ccms.server.servlet.filter.GZIPCompressionFilter.doFilter(GZIPCompressionFilter.java:85) [classes:]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:168) [cors-filter-1.7.1.jar:1.7.1]
	at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:233) [cors-filter-1.7.1.jar:1.7.1]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
	at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
	at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]

07:22:42,594 ERROR [org.jboss.pressgang.ccms.contentspec.processor.ContentSpecProcessor] (http-/0.0.0.0:8180-3) An error occurred during processing please try again and if another failure occurs please log a bug.

Comment 7 Lee Newson 2013-11-26 02:36:04 UTC
Fixed in 1.3-SNAPSHOT build 201311261101

This was caused by the fix in https://bugzilla.redhat.com/show_bug.cgi?id=1014455#c10 not checking for a null value.

This version is available on the development/test server.

Comment 8 Matthew Casperson 2013-11-26 06:21:18 UTC
Confirmed that invalid docbook in the abstract will generate an error.


Note You need to log in before you can comment on or make changes to this bug.