Hi, I went to add a Jira issue for this autoComplete problem this morning (I forgot it before and went away for a few days) but it cannot be added at the moment due to some spamming issues.
Meanwhile, I just came across a problem in the Isis Security Add-on that may be related, starting with a fresh system, when I go to add a new local user I see an exception message. I am using 1.12.1 version, add role and add tenancy both work. Stack trace: - org.apache.wicket.WicketRuntimeException - Error attaching this container for rendering: [WebMarkupContainer [Component id = 4]] - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1696) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.markup.repeater.AbstractRepeater#onBeforeRender(AbstractRepeater.java:143) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.markup.html.form.Form#onBeforeRender(Form.java:1803) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.Component#internalPrepareForRender(Component.java:2201) - org.apache.wicket.Component#prepareForRender(Component.java:2240) - org.apache.wicket.ajax.XmlAjaxResponse#writeComponent(XmlAjaxResponse.java:107) - org.apache.wicket.ajax.AbstractAjaxResponse#writeComponents(AbstractAjaxResponse.java:218) - org.apache.wicket.ajax.AbstractAjaxResponse#writeTo(AbstractAjaxResponse.java:150) - org.apache.wicket.ajax.AjaxRequestHandler#respond(AjaxRequestHandler.java:359) - org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:890) - org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:64) - org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:97) - org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:261) - org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:218) - org.apache.wicket.request.cycle.RequestCycle#processRequestAndDetach(RequestCycle.java:289) - org.apache.wicket.protocol.http.WicketFilter#processRequestCycle(WicketFilter.java:259) - org.apache.wicket.protocol.http.WicketFilter#processRequest(WicketFilter.java:201) - org.apache.wicket.protocol.http.WicketFilter#doFilter(WicketFilter.java:282) - org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1668) - org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter#doFilter(IsisLogOnExceptionFilter.java:52) - org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1668) - org.apache.shiro.web.servlet.AbstractShiroFilter#executeChain(AbstractShiroFilter.java:449) - org.apache.shiro.web.servlet.AbstractShiroFilter$1#call(AbstractShiroFilter.java:365) - org.apache.shiro.subject.support.SubjectCallable#doCall(SubjectCallable.java:90) - org.apache.shiro.subject.support.SubjectCallable#call(SubjectCallable.java:83) - org.apache.shiro.subject.support.DelegatingSubject#execute(DelegatingSubject.java:383) - org.apache.shiro.web.servlet.AbstractShiroFilter#doFilterInternal(AbstractShiroFilter.java:362) - org.apache.shiro.web.servlet.OncePerRequestFilter#doFilter(OncePerRequestFilter.java:125) - org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1668) - org.eclipse.jetty.servlet.ServletHandler#doHandle(ServletHandler.java:581) - org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:143) - org.eclipse.jetty.security.SecurityHandler#handle(SecurityHandler.java:548) - org.eclipse.jetty.server.session.SessionHandler#doHandle(SessionHandler.java:226) - org.eclipse.jetty.server.handler.ContextHandler#doHandle(ContextHandler.java:1158) - org.eclipse.jetty.servlet.ServletHandler#doScope(ServletHandler.java:511) - org.eclipse.jetty.server.session.SessionHandler#doScope(SessionHandler.java:185) - org.eclipse.jetty.server.handler.ContextHandler#doScope(ContextHandler.java:1090) - org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:141) - org.eclipse.jetty.server.handler.HandlerWrapper#handle(HandlerWrapper.java:119) - org.eclipse.jetty.server.Server#handle(Server.java:517) - org.eclipse.jetty.server.HttpChannel#handle(HttpChannel.java:308) - org.eclipse.jetty.server.HttpConnection#onFillable(HttpConnection.java:242) - org.eclipse.jetty.io.AbstractConnection$ReadCallback#succeeded(AbstractConnection.java:261) - org.eclipse.jetty.io.FillInterest#fillable(FillInterest.java:95) - org.eclipse.jetty.io.SelectChannelEndPoint$2#run(SelectChannelEndPoint.java:75) - org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume#produceAndRun(ExecuteProduceConsume.java:213) - org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume#run(ExecuteProduceConsume.java:147) - org.eclipse.jetty.util.thread.QueuedThreadPool#runJob(QueuedThreadPool.java:654) - org.eclipse.jetty.util.thread.QueuedThreadPool$3#run(QueuedThreadPool.java:572) - java.lang.Thread#run(Thread.java:745) - - Caused by: - - java.lang.NullPointerException - - org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacetAbstract#findMethod(AutoCompleteFacetAbstract.java:145) - org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacetAbstract#getMinLength(AutoCompleteFacetAbstract.java:134) - org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanel#syncWithInput(ReferencePanel.java:281) - org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanel#addComponentForRegular(ReferencePanel.java:126) - org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanel#addComponentForRegular(ReferencePanel.java:72) - org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract#buildGui(ScalarPanelAbstract.java:245) - org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract#onBeforeRender(ScalarPanelAbstract.java:199) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.markup.repeater.AbstractRepeater#onBeforeRender(AbstractRepeater.java:143) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.markup.html.form.Form#onBeforeRender(Form.java:1803) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.Component#internalPrepareForRender(Component.java:2201) - org.apache.wicket.Component#prepareForRender(Component.java:2240) - org.apache.wicket.ajax.XmlAjaxResponse#writeComponent(XmlAjaxResponse.java:107) - org.apache.wicket.ajax.AbstractAjaxResponse#writeComponents(AbstractAjaxResponse.java:218) - org.apache.wicket.ajax.AbstractAjaxResponse#writeTo(AbstractAjaxResponse.java:150) - org.apache.wicket.ajax.AjaxRequestHandler#respond(AjaxRequestHandler.java:359) - org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:890) - org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:64) - org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:97) - org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:261) - org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:218) - org.apache.wicket.request.cycle.RequestCycle#processRequestAndDetach(RequestCycle.java:289) - org.apache.wicket.protocol.http.WicketFilter#processRequestCycle(WicketFilter.java:259) - org.apache.wicket.protocol.http.WicketFilter#processRequest(WicketFilter.java:201) - org.apache.wicket.protocol.http.WicketFilter#doFilter(WicketFilter.java:282) - org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1668) - org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter#doFilter(IsisLogOnExceptionFilter.java:52) - org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1668) - org.apache.shiro.web.servlet.AbstractShiroFilter#executeChain(AbstractShiroFilter.java:449) - org.apache.shiro.web.servlet.AbstractShiroFilter$1#call(AbstractShiroFilter.java:365) - org.apache.shiro.subject.support.SubjectCallable#doCall(SubjectCallable.java:90) - org.apache.shiro.subject.support.SubjectCallable#call(SubjectCallable.java:83) - org.apache.shiro.subject.support.DelegatingSubject#execute(DelegatingSubject.java:383) - org.apache.shiro.web.servlet.AbstractShiroFilter#doFilterInternal(AbstractShiroFilter.java:362) - org.apache.shiro.web.servlet.OncePerRequestFilter#doFilter(OncePerRequestFilter.java:125) - org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1668) - org.eclipse.jetty.servlet.ServletHandler#doHandle(ServletHandler.java:581) - org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:143) - org.eclipse.jetty.security.SecurityHandler#handle(SecurityHandler.java:548) - org.eclipse.jetty.server.session.SessionHandler#doHandle(SessionHandler.java:226) - org.eclipse.jetty.server.handler.ContextHandler#doHandle(ContextHandler.java:1158) - org.eclipse.jetty.servlet.ServletHandler#doScope(ServletHandler.java:511) - org.eclipse.jetty.server.session.SessionHandler#doScope(SessionHandler.java:185) - org.eclipse.jetty.server.handler.ContextHandler#doScope(ContextHandler.java:1090) - org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:141) - org.eclipse.jetty.server.handler.HandlerWrapper#handle(HandlerWrapper.java:119) - org.eclipse.jetty.server.Server#handle(Server.java:517) - org.eclipse.jetty.server.HttpChannel#handle(HttpChannel.java:308) - org.eclipse.jetty.server.HttpConnection#onFillable(HttpConnection.java:242) - org.eclipse.jetty.io.AbstractConnection$ReadCallback#succeeded(AbstractConnection.java:261) - org.eclipse.jetty.io.FillInterest#fillable(FillInterest.java:95) - org.eclipse.jetty.io.SelectChannelEndPoint$2#run(SelectChannelEndPoint.java:75) - org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume#produceAndRun(ExecuteProduceConsume.java:213) - org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume#run(ExecuteProduceConsume.java:147) - org.eclipse.jetty.util.thread.QueuedThreadPool#runJob(QueuedThreadPool.java:654) - org.eclipse.jetty.util.thread.QueuedThreadPool$3#run(QueuedThreadPool.java:572) - java.lang.Thread#run(Thread.java:745) On Thu, May 5, 2016 at 4:42 PM, Stephen Cameron <[email protected]> wrote: > thanks for the rapid response, I should have looked in JIRA too, will do > so now. > > On Thu, May 5, 2016 at 4:39 PM, Dan Haywood <[email protected]> > wrote: > >> Meantime, the work-around is to use a view model, eg: >> >> >> import org.apache.isis.applib.annotation.Title; >> >> @javax.xml.bind.annotation.XmlRootElement(name = "address") >> @javax.xml.bind.annotation.XmlType(propOrder = { "name" } ) >> public class Address implements org.apache.isis.applib.services.dto.Dto { >> >> public static Address of(String name) { >> final Address address = new Address(); >> address.setName(name); >> return address; >> } >> >> private String name; >> >> @Title >> public String getName() { return name; } >> public void setName(final String name) { this.name = name; } >> >> } >> >> >> and then: >> >> >> final ArrayList<Address> addresses = Lists.newArrayList( >> Address.of("Strawberry fields"), >> Address.of("Penny Lane"), >> Address.of("Abbey Road"), >> Address.of("Octopuses Garden"), >> Address.of("Blackburn, Lancashire"), >> Address.of("Georgia"), >> Address.of("Eiffel Tower"), >> Address.of("Isle of Wight")); >> >> public void updateStreetAddress(String field1, String field2, Address >> field3) { >> >> } >> public List<Address> autoComplete2UpdateStreetAddress(@MinLength(1) >> final String search) { >> return >> Lists.newArrayList( >> FluentIterable.from(addresses).filter(x -> >> x.getName().contains(search)).toList() >> ); >> } >> >> >> nb: need to wrap the returned list in an ArrayList, else I get a "Loading >> Failed" exception. But that's a side issue. >> >> >> I wonder if there's a ticket for this missing feature... I probably >> should've checked JIRA first. Anyway, if you can't find one, go ahead and >> create a new one. >> >> Dan >> >> >> >> >> >> >> On 5 May 2016 at 07:19, Dan Haywood <[email protected]> wrote: >> >> > I see the same behaviour (ie no drop-down) on 1.11.1; the validate >> doesn't >> > seem to be relevant: >> > >> > final ArrayList<String> addresses = Lists.newArrayList( >> > "Strawberry fields", "Penny Lane","Abbey Road","Octopuses >> > Garden","Blackburn, Lancashire","Georgia","Eiffel Tower","Isle of >> Wight"); >> > >> > public void updateStreetAddress(String field1, String field2, String >> > field3) { >> > >> > } >> > public List<String> autoComplete2UpdateStreetAddress(@MinLength(3) >> > final String search) { >> > return >> > FluentIterable.from(addresses).filter(x -> >> > x.contains(search)).toList(); >> > } >> > >> > >> > Conversely, a choices field works fine for both 1.11.1 and 1.12.1: >> > >> > public List<String> choices2UpdateStreetAddress() { >> > return addresses; >> > } >> > >> > >> > Perhaps this never worked. Have you seen this work in any earlier >> > versions? >> > >> > >> > >> > >> > >> > >> > On 5 May 2016 at 06:57, Dan Haywood <[email protected]> >> wrote: >> > >> >> Hmm, I can't see a mistake here. Investigating... >> >> >> >> On 5 May 2016 at 03:41, Stephen Cameron <[email protected]> >> >> wrote: >> >> >> >>> Hi, >> >>> >> >>> I am trying to use autoCompleteNXxxx() for the first time and not >> having >> >>> any success with 1.12.1, it just doesn't seem to fire my routine at >> all. >> >>> I >> >>> have the following two methods an autoComplete and a validate, the >> first >> >>> doesn't get used but the second does. >> >>> >> >>> public List<String> autoComplete2UpdateStreetAddress(@MinLength(3) >> >>> String search) { >> >>> return suburbs.listSuburbNamesLike(search); >> >>> } >> >>> >> >>> public String validate2UpdateStreetAddress(String name) { >> >>> Suburb s = suburbs.suburbForName(name); >> >>> if (s != null) { >> >>> return null; >> >>> } else >> >>> return "Unknown suburb, please check spelling and use >> proper >> >>> case"; >> >>> } >> >>> >> >>> If someone can confirm its working for them in 1.12.1 or else tell me >> I >> >>> have made a mistake. >> >>> >> >>> Steve Cameron >> >>> >> >> >> >> >> > >> > >
