The following situation leads to error messages until logout: An object A has an attribute of the type "Document folder" (WebFolder). This WebFolder is maintained on object A, but should also be displayed on another object B. For this purpose, B has a calculated attribute which provides the WebFolder of A. For object B, the WebFolder is embedded in the form. The content cannot be changed there, but the files are displayed for download. If a file is now uploaded to object A, it is displayed on object B. If the file is removed from object A and then object B is viewed again, an error message appears and a line of the type "DeletedObject(ImmutableKnowledgeObjectAttributedDocument(type:tl.folder:Document, id: Document:46017@717, name: test.html, DSN: repository://topl33211/test.html))" is displayed in the table. The GUI seems to be OK again after F5, the table then no longer shows an entry, but the error message appears from then on with every click until logout.
Log entry for this:
com.top_logic.knowledge.wrap.exceptions.InvalidWrapperException: Deleted object access: Document:183403 at com.top_logic.knowledge.wrap.AbstractWrapper.checkInvalid(AbstractWrapper.java:443) at com.top_logic.knowledge.wrap.AbstractWrapper.getDAP(AbstractWrapper.java:127) at com.top_logic.common.webfolder.ui.commands.UpdateExecutable.calculateExecutability(UpdateExecutable.java:70) at com.top_logic.layout.form.model.AbstractExecutabilityModel.updateExecutabilityState(AbstractExecutabilityModel.java:41) at com.top_logic.layout.basic.CommandModelRegistry.updateCommandModel(CommandModelRegistry.java:85) at com.top_logic.layout.basic.CommandModelRegistry.updateCommandModel(CommandModelRegistry.java:87) at com.top_logic.layout.basic.CommandModelRegistry.updateCommandModels(CommandModelRegistry.java:72) at com.top_logic.layout.basic.CommandModelRegistry.validate(CommandModelRegistry.java:115) at com.top_logic.util.DefaultValidationQueue.actualValidation(DefaultValidationQueue.java:134) at com.top_logic.util.DefaultValidationQueue.runValidation(DefaultValidationQueue.java:108) at com.top_logic.layout.internal.SubsessionHandler.runValidation(SubsessionHandler.java:349) at com.top_logic.mig.html.layout.MainLayout.globallyValidateModel(MainLayout.java:1605) at com.top_logic.base.services.simpleajax.AJAXServlet.validate(AJAXServlet.java:739) at com.top_logic.base.services.simpleajax.AJAXServlet.validate(AJAXServlet.java:717) at com.top_logic.base.services.simpleajax.AJAXServlet.doPost(AJAXServlet.java:362)
The debugger shows that the CommandModelRegistry holds a reference to a command from the WebFolder field, which has a reference to the deleted AttributedDocument. With each click, the ExecutabilityRule of the command is checked and leads to the error.
Solution
The ExecutabilityRule of the command checks whether it is a deleted object before the object is accessed.