[BLOSSOM-55] DAMControl cannot be created using TabBuilder Created: 09/Dec/11 Updated: 07/Nov/14 Resolved: 07/Feb/14 |
|
| Status: | Closed |
| Project: | Blossom |
| Component/s: | None |
| Affects Version/s: | 1.2.3 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Neutral |
| Reporter: | Tobias Mattsson | Assignee: | Tobias Mattsson |
| Resolution: | Not an issue | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| 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 |
|
Reported on the user list. The control fails with a NullPointerException. http://forum.magnolia-cms.com/forum/thread.html?threadId=58af16e8-6cf3-4a90-b88e-3e76ed1cd7f2 |
| Comments |
| Comment by Tobias Mattsson [ 09/Dec/11 ] |
|
The problem is that the control expects to have a name when its init() method is called which it isnt when created without a config node. The init() method calls loadHandlers() which adds sub controls as control name + sub control name ("imageDmsUUID"), as the name is null the sub control gets the name "DmsUUID". When it later looks for the sub-control it has a name set and tries to find "imageDmsUUID" which fails with an NPE. There is a workaround where setName() is called before init. public static void addDamControl(TabBuilder tab, String name, String label, String description) { try { DialogDAM control = Classes.getClassFactory().newInstance(DialogDAM.class); control.setName(name); control.setLabel(label); control.setDescription(description); DialogCreationContext context = tab.getContext(); control.init(context.getRequest(), context.getResponse(), context.getWebsiteNode(), null); control.setConfig("i18nBasename", "info.magnolia.module.templatingkit.messages"); tab.getTab().addSub(control); } catch (RepositoryException e) { throw new RuntimeRepositoryException(e); } } |
| Comment by Jean-Charles Robert [ 05/Feb/14 ] |
|
Hello, I've managed to add the DAM control, but when I tried to save the dialog, I am getting this exception. (See the last post in the forum too http://forum.magnolia-cms.com/forum/thread.html?threadId=58af16e8-6cf3-4a90-b88e-3e76ed1cd7f2) Here is the full stacktrace:
14-02-05 18:01:57 ERROR AUTHOR[btpool0-11]info.magnolia.cms.servlets.MVCServletHandlerImpl: can't call command: save
java.lang.UnsupportedOperationException: This operation is not supported on node datas of type BINARY
at info.magnolia.cms.core.BinaryNodeData.setValue(BinaryNodeData.java:323)
at info.magnolia.module.admininterface.SaveHandlerImpl.processWriteCommon(SaveHandlerImpl.java:694)
at info.magnolia.module.admininterface.SaveHandlerImpl.processString(SaveHandlerImpl.java:666)
at info.magnolia.module.admininterface.UUIDSaveHandler.processString(UUIDSaveHandler.java:86)
at info.magnolia.module.admininterface.SaveHandlerImpl.processCommon(SaveHandlerImpl.java:619)
at info.magnolia.module.admininterface.SaveHandlerImpl.processSaveInfo(SaveHandlerImpl.java:386)
at info.magnolia.module.admininterface.SaveHandlerImpl.save(SaveHandlerImpl.java:234)
at info.magnolia.module.admininterface.DialogMVCHandler.onSave(DialogMVCHandler.java:350)
at info.magnolia.module.admininterface.DialogMVCHandler.save(DialogMVCHandler.java:232)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1254)
at info.magnolia.cms.servlets.MVCServletHandlerImpl.execute(MVCServletHandlerImpl.java:121)
at info.magnolia.cms.servlets.MVCServlet.doPost(MVCServlet.java:125)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at info.magnolia.cms.filters.ServletDispatchingFilter.doFilter(ServletDispatchingFilter.java:123)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:67)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.cms.filters.VirtualUriFilter.doFilter(VirtualUriFilter.java:70)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:58)
at info.magnolia.module.cache.executor.CompositeExecutor.processCacheRequest(CompositeExecutor.java:66)
at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:153)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:76)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.cms.filters.RangeSupportFilter.doFilter(RangeSupportFilter.java:84)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:60)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
at info.magnolia.cms.security.SecurityCallbackFilter.doFilter(SecurityCallbackFilter.java:86)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:93)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.module.templatingkit.filters.SiteMergeFilter.doFilter(SiteMergeFilter.java:106)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.module.extendedtemplatingkit.filters.MultiSiteFilter.doFilter(MultiSiteFilter.java:106)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.cms.filters.MultiChannelFilter.doFilter(MultiChannelFilter.java:83)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.module.cache.filter.GZipFilter.doFilter(GZipFilter.java:73)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:93)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:52)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.cms.filters.UnicodeNormalizationFilter.doFilter(UnicodeNormalizationFilter.java:90)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.cms.filters.CosMultipartRequestFilter.doFilter(CosMultipartRequestFilter.java:91)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.module.devicedetection.filter.DeviceDetectionFilter.doFilter(DeviceDetectionFilter.java:73)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:102)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:131)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:67)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
at info.magnolia.cms.filters.SafeDestroyMgnlFilterWrapper.doFilter(SafeDestroyMgnlFilterWrapper.java:108)
at info.magnolia.cms.filters.MgnlFilterDispatcher.doDispatch(MgnlFilterDispatcher.java:67)
at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:108)
at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:94)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:313)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
Configuration: Magnolia 4.5.11, Blossom 2.0.3 |
| Comment by Tobias Mattsson [ 05/Feb/14 ] |
|
Hi Jean-Charles. I can't reproduce this problem. Using the snippet above in the sample with Magnolia 4.5.11 and DMS 1.6.5 it works for me. Which version of DMS are you using? I'm assuming you're uploading an image directly to the page, correct? Does this happen already when adding the image or afterwards when editing? Have you modified the configuration of the DAM handlers in STK? In config at /modules/standard-templating-kit/config/damSupport/handlers |
| Comment by Jean-Charles Robert [ 06/Feb/14 ] |
|
Ok I could understand the problem. So now I can only approve your workaround. |
| Comment by Tobias Mattsson [ 07/Feb/14 ] |
|
Nice to hear that! |