[MGNLCAT-23] Error while saving categories to the Contact data type Created: 03/Nov/10  Updated: 04/Nov/15  Resolved: 04/Nov/15

Status: Closed
Project: Magnolia Categorization Module
Component/s: None
Affects Version/s: 1.1.4
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Frank Rittinger Assignee: Teresa Miyar
Resolution: Won't Do Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Magnolia 3.4.8 Enterprise, magnolia live demo site and local magnolia demo


Attachments: JPEG File screenshot-1.jpg     JPEG File screenshot-2.jpg    
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   

When I try to save categories on the data modules Contact element, Magnolia doesn't save the form but redisplays it empty again and throws the following exception.

Workflow:

  • Add tabCategorization to the Contact dialogs
  • create some categories
  • create a Contact entry and open the edit dialog
  • edit the categories in teh category tab and klick save
    --> Exception is thrown and nothing is saved.

2010-11-03 11:05:14,933 ERROR nfo.magnolia.module.admininterface.SaveHandlerImpl: no matching property definition found for {}categories
javax.jcr.nodetype.ConstraintViolationException: no matching property definition found for {}categories
at org.apache.jackrabbit.core.nodetype.EffectiveNodeType.getApplicablePropertyDef(EffectiveNodeType.java:770)
at org.apache.jackrabbit.core.NodeImpl.getApplicablePropertyDefinition(NodeImpl.java:920)
at org.apache.jackrabbit.core.NodeImpl.getOrCreateProperty(NodeImpl.java:457)
at org.apache.jackrabbit.core.NodeImpl.getOrCreateProperty(NodeImpl.java:391)
at org.apache.jackrabbit.core.NodeImpl.setProperty(NodeImpl.java:2290)
at info.magnolia.cms.core.DefaultNodeData.setValue(DefaultNodeData.java:280)
at info.magnolia.cms.core.AbstractContent.setNodeData(AbstractContent.java:159)
at info.magnolia.cms.core.AbstractContent.createNodeData(AbstractContent.java:89)
at info.magnolia.cms.util.NodeDataUtil.getOrCreateAndSet(NodeDataUtil.java:417)
at info.magnolia.module.categorization.controls.CategorizationSaveHandler.processMultiple(CategorizationSaveHandler.java:73)
at info.magnolia.module.categorization.controls.CategorizationSaveHandler.save(CategorizationSaveHandler.java:80)
at info.magnolia.module.admininterface.SaveHandlerImpl.processSaveInfo(SaveHandlerImpl.java:317)
at info.magnolia.module.admininterface.SaveHandlerImpl.save(SaveHandlerImpl.java:220)
at info.magnolia.module.admininterface.DialogMVCHandler.onSave(DialogMVCHandler.java:334)
at info.magnolia.module.admininterface.DialogMVCHandler.save(DialogMVCHandler.java:229)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at info.magnolia.cms.servlets.MVCServletHandlerImpl.execute(MVCServletHandlerImpl.java:118)
at info.magnolia.cms.servlets.MVCServlet.doPost(MVCServlet.java:123)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at info.magnolia.cms.filters.ServletDispatchingFilter.doFilter(ServletDispatchingFilter.java:183)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:64)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.VirtualUriFilter.doFilter(VirtualUriFilter.java:133)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:57)
at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:122)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:62)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:75)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.module.extendedtemplatingkit.filters.MultiSiteFilter.doFilter(MultiSiteFilter.java:94)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.module.cache.filter.GZipFilter.doFilter(GZipFilter.java:83)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:62)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:64)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:88)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:62)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:77)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:51)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.CosMultipartRequestFilter.doFilter(CosMultipartRequestFilter.java:88)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:102)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:117)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:64)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:96)
at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:199)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)



 Comments   
Comment by Frank Rittinger [ 03/Nov/10 ]

dialog definition

Comment by Suzanne Deprez [ 29/Mar/11 ]

I was able to eliminate this error by adding the following line to within the nodetype (within a <nodetype> </nodetype> pair) for a Data type within the file webapps/magnoliaAuthor/repositories/magnolia/repository/nodetypes/custom_nodetypes.xml in the apache installation directory for Magnolia:
<propertyDefinition name="*" requiredType="undefined" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="true" />

This was done after adding the tabCategorization to the dialog for the Data type in AdminCentral.

Comment by Zdenek Skodik [ 31/Mar/11 ]

In other words the issue is that the base node type of the data module - dataBase - does not allow multiple values for properties. All the data types defined by the Data module are children of this dataBase and as such inherit that multiple="false" by default.
Categories need to be saved as a comma-separated list, so need to have multiple="true" to be saved. If not, you face the stacktrace above.

Comment by Michael Mühlebach [ 04/Nov/15 ]

Given the thousands of other issues we have open that are more highly requested, we won't be able to address this issue in the foreseeable future. Instead we will focus on issues with a higher impact, and more votes.
Thanks for taking the time to raise this issue. As you are no doubt aware this issue has been on our backlog for some time now with very little movement.
I'm going to close this to set expectations so the issue doesn't stay open for years with few updates. If the issue is still relevant please feel free to reopen it or create a new issue.

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