[ 
https://issues.apache.org/jira/browse/ISIS-1705?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16143600#comment-16143600
 ] 

Vladimir Nisevic commented on ISIS-1705:
----------------------------------------

Hi Dan, I have done some analysis and found next behaviour

in the 
*org.apache.isis.viewer.wicket.ui.components.entity.fieldset.PropertyGroup*  
you filter out the properties which are hidden...

{code}

private ImmutableList<ObjectAssociation> getObjectAssociations(
        final List<PropertyLayoutData> properties,
        final ObjectAdapter adapter) {

    //
    // previously we filtered out any invisible properties.
    // However, the inline prompt/don't redirect logic introduced in 1.15.0 
means that we keep the same page,
    // and it may be that individual properties start out as invisible but then 
become visible later.
    //
    // therefore the responsibility of determining whether an individual 
property's component should be visible
    // or not moves to ScalarPanelAbstract2#onConfigure(...)
    //

    return FluentIterable.from(properties)
                .filter(new Predicate<PropertyLayoutData>() {
                    @Override
                    public boolean apply(final PropertyLayoutData 
propertyLayoutData) {
                        return propertyLayoutData.getMetadataError() == null;
                    }
                })
                .transform(new Function<PropertyLayoutData, 
ObjectAssociation>() {
                    @Override
                    public ObjectAssociation apply(final PropertyLayoutData 
propertyLayoutData) {
                        ObjectSpecification adapterSpecification = 
adapter.getSpecification();
                        try {
                            // this shouldn't happen, but has been reported 
(https://issues.apache.org/jira/browse/ISIS-1574),
                            // suggesting that in some cases the GridService 
can get it wrong.  This is therefore a hack...
                            return 
adapterSpecification.getAssociation(propertyLayoutData.getId());
                        } catch (ObjectSpecificationException e) {
                            return null;
                        }
                    }
                })
            .filter(new Predicate<ObjectAssociation>() {
                @Override public boolean apply(@Nullable final 
ObjectAssociation objectAssociation) {
                    if(objectAssociation == null) {
                        return false;
                    }
                    final HiddenFacet facet = 
objectAssociation.getFacet(HiddenFacet.class);
                    if(facet != null && !facet.isNoop()) {
                        // static invisible.
                        if(facet.where() == Where.EVERYWHERE || facet.where() 
== Where.OBJECT_FORMS) {
                            return false;
                        }
                    }
                    return true;
                }
            })
                .toList();
}

{code}

but in the case of  *org.isisaddons.module.settings.dom.SettingAbstract *in 
property e.g. *getValueAsInt() *decision of hidden is done by supporting method

{code}
@Property(
        hidden = Where.ALL_TABLES
)
public Integer getValueAsInt() {
    return parseValueAsInt();
}
public boolean hideValueAsInt() {
    return typeIsNot(SettingType.INT);
}
{code}

this is not honoured by the filter method above and therefore all 
*getValueAsXxx* are still there and evaluated when building the GUI.

Not sure if I am on right path...

BR,Vladimir

> Addon module isis-module-settings is not working after upgrade to Isis 1.15.0
> -----------------------------------------------------------------------------
>
>                 Key: ISIS-1705
>                 URL: https://issues.apache.org/jira/browse/ISIS-1705
>             Project: Isis
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.15.0
>            Reporter: Vladimir Nisevic
>
> Here the mail thread describing the issue: 
> https://www.mail-archive.com/users@isis.apache.org/msg05286.html 
> h1. How to reproduce
> * Integrate addon with simpleapp
> * Try to create an Application Settings "New String"
> Exception
> {code}
> 07:45:49,678  [RequestCycleExtra    qtp942986815-17 WARN ]  Handling the
> following exception
> org.apache.wicket.WicketRuntimeException: Method onRequest of interface
> org.apache.wicket.behavior.IBehaviorListener targeted at
> org.apache.wicket.ajax.markup.html.form.AjaxButton$1@302b1c47 on component
> [IndicatingAjaxButton [Component id = okButton]] threw an exception
> at
> org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:268)
> at
> org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241)
> at
> org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:248)
> at
> org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:234)
> at
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:895)
> at
> org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
> at
> org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265)
> at
> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222)
> at
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293)
> at
> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261)
> at
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203)
> at
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:284)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)
> at
> org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter.doFilter(IsisLogOnExceptionFilter.java:52)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)
> at
> org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
> at
> org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
> at
> org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
> at
> org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
> at
> org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
> at
> org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
> at
> org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)
> at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
> at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
> at
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
> at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)
> at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
> at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
> at org.eclipse.jetty.server.Server.handle(Server.java:524)
> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319)
> at
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253)
> at
> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
> at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
> at
> org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
> at
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
> at
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
> at
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.reflect.InvocationTargetException
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at
> org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
> ... 44 more
> Caused by: java.lang.RuntimeException: java.lang.NumberFormatException: For
> input string: "dd"
> at
> org.apache.isis.core.metamodel.adapter.mgr.AdapterManager$ConcurrencyChecking.executeWithConcurrencyCheckingDisabled(AdapterManager.java:90)
> at
> org.apache.isis.viewer.wicket.ui.actionresponse.ActionResultResponseType.toEntityPage(ActionResultResponseType.java:159)
> at
> org.apache.isis.viewer.wicket.ui.actionresponse.ActionResultResponseType.access$200(ActionResultResponseType.java:46)
> at
> org.apache.isis.viewer.wicket.ui.actionresponse.ActionResultResponseType$1.interpretResult(ActionResultResponseType.java:51)
> at
> org.apache.isis.viewer.wicket.ui.actionresponse.ActionResultResponseType.determineAndInterpretResult(ActionResultResponseType.java:178)
> at
> org.apache.isis.viewer.wicket.ui.components.actions.ActionFormExecutorStrategy.redirectTo(ActionFormExecutorStrategy.java:79)
> at
> org.apache.isis.viewer.wicket.ui.panels.FormExecutorDefault.redirectTo(FormExecutorDefault.java:520)
> at
> org.apache.isis.viewer.wicket.ui.panels.FormExecutorDefault.executeAndProcessResults(FormExecutorDefault.java:166)
> at
> org.apache.isis.viewer.wicket.ui.panels.PromptFormAbstract.onOkSubmittedOf(PromptFormAbstract.java:228)
> at
> org.apache.isis.viewer.wicket.ui.panels.PromptFormAbstract.access$000(PromptFormAbstract.java:60)
> at
> org.apache.isis.viewer.wicket.ui.panels.PromptFormAbstract$1.onSubmit(PromptFormAbstract.java:122)
> at
> org.apache.wicket.ajax.markup.html.form.AjaxButton$1.onSubmit(AjaxButton.java:113)
> at
> org.apache.wicket.ajax.form.AjaxFormSubmitBehavior$AjaxFormSubmitter.onSubmit(AjaxFormSubmitBehavior.java:215)
> at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1307)
> at org.apache.wicket.markup.html.form.Form.process(Form.java:976)
> at
> org.apache.isis.viewer.wicket.ui.panels.FormAbstract.process(FormAbstract.java:77)
> at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:797)
> at
> org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:171)
> at
> org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:155)
> at
> org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:601)
> ... 49 more
> Caused by: java.lang.NumberFormatException: For input string: "dd"
> at
> java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
> at java.lang.Integer.parseInt(Integer.java:580)
> at java.lang.Integer.parseInt(Integer.java:615)
> at
> org.isisaddons.module.settings.dom.SettingAbstract.parseValueAsInt(SettingAbstract.java:89)
> at
> org.isisaddons.module.settings.dom.SettingAbstract.getValueAsInt(SettingAbstract.java:147)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at
> org.apache.isis.core.commons.lang.MethodExtensions.invoke(MethodExtensions.java:53)
> at
> org.apache.isis.core.commons.lang.MethodExtensions.invoke(MethodExtensions.java:47)
> at
> org.apache.isis.core.metamodel.adapter.ObjectAdapter$InvokeUtils.invoke(ObjectAdapter.java:373)
> at
> org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor.getProperty(PropertyAccessorFacetViaAccessor.java:76)
> at
> org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationDefault.get(OneToOneAssociationDefault.java:146)
> at
> org.apache.isis.viewer.wicket.model.models.ScalarModel$Kind$1.reset(ScalarModel.java:293)
> at
> org.apache.isis.viewer.wicket.model.models.ScalarModel$Kind$1.init(ScalarModel.java:283)
> at
> org.apache.isis.viewer.wicket.model.models.ScalarModel.init(ScalarModel.java:683)
> at
> org.apache.isis.viewer.wicket.model.models.ScalarModel.<init>(ScalarModel.java:677)
> at
> org.apache.isis.viewer.wicket.model.models.EntityModel.getPropertyModel(EntityModel.java:357)
> at
> org.apache.isis.viewer.wicket.ui.components.entity.fieldset.PropertyGroup.addPropertyToForm(PropertyGroup.java:204)
> at
> org.apache.isis.viewer.wicket.ui.components.entity.fieldset.PropertyGroup.buildGui(PropertyGroup.java:104)
> at
> org.apache.isis.viewer.wicket.ui.components.entity.fieldset.PropertyGroup.<init>(PropertyGroup.java:78)
> at
> org.apache.isis.viewer.wicket.ui.components.layout.bs3.col.Col.buildGui(Col.java:243)
> at
> org.apache.isis.viewer.wicket.ui.components.layout.bs3.col.Col.<init>(Col.java:79)
> at
> org.apache.isis.viewer.wicket.ui.components.layout.bs3.row.Row.buildGui(Row.java:69)
> at
> org.apache.isis.viewer.wicket.ui.components.layout.bs3.row.Row.<init>(Row.java:53)
> at
> org.apache.isis.viewer.wicket.ui.components.layout.bs3.BS3GridPanel.buildGui(BS3GridPanel.java:53)
> at
> org.apache.isis.viewer.wicket.ui.components.layout.bs3.BS3GridPanel.<init>(BS3GridPanel.java:42)
> at
> org.apache.isis.viewer.wicket.ui.components.entity.selector.links.EntityLinksSelectorPanelFactory.createComponent(EntityLinksSelectorPanelFactory.java:57)
> at
> org.apache.isis.viewer.wicket.ui.ComponentFactoryAbstract.createComponent(ComponentFactoryAbstract.java:98)
> at
> org.apache.isis.viewer.wicket.viewer.registries.components.ComponentFactoryRegistryDefault.createComponent(ComponentFactoryRegistryDefault.java:121)
> at
> org.apache.isis.viewer.wicket.viewer.registries.components.ComponentFactoryRegistryDefault.addOrReplaceComponent(ComponentFactoryRegistryDefault.java:106)
> at
> org.apache.isis.viewer.wicket.ui.pages.PageAbstract.addComponent(PageAbstract.java:404)
> at
> org.apache.isis.viewer.wicket.ui.pages.PageAbstract.addChildComponents(PageAbstract.java:399)
> at
> org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage.buildPage(EntityPage.java:182)
> at
> org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage.<init>(EntityPage.java:115)
> at
> org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage.<init>(EntityPage.java:83)
> at
> org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage.<init>(EntityPage.java:95)
> at
> org.apache.isis.viewer.wicket.ui.actionresponse.ActionResultResponseType$9.call(ActionResultResponseType.java:162)
> at
> org.apache.isis.viewer.wicket.ui.actionresponse.ActionResultResponseType$9.call(ActionResultResponseType.java:160)
> at
> org.apache.isis.core.metamodel.adapter.mgr.AdapterManager$ConcurrencyChecking.executeWithConcurrencyCheckingDisabled(AdapterManager.java:88)
> ... 68 more
> 07:45:49,684  [RequestCycleExtra    qtp942986815-17 WARN ]
> {code}
> Here the fork with simpleapp and addon:
> https://github.com/niv0/isis/tree/simpleapp-with-settings-addon



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to