I'm was getting the following error when trying to edit a user from the forms
view list. I'm using version 2.1.2. It happens when the console tries to
load the plain schemas. Note there is no issue editing users from the User
List under Realms.
The error is:
16:32:00.880 ERROR
org.apache.syncope.client.console.SyncopeConsoleRequestCycleListener -
Exception found
org.apache.wicket.WicketRuntimeException: Error attaching this container for
rendering: [PlainSchemas [Component id = content]]
at
org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1765)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.onBeforeRender(Component.java:3788)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.beforeRender(Component.java:937)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.onBeforeRender(Component.java:3788)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.beforeRender(Component.java:937)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.onBeforeRender(Component.java:3788)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.beforeRender(Component.java:937)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.onBeforeRender(Component.java:3788)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.markup.repeater.AbstractRepeater.onBeforeRender(AbstractRepeater.java:143)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.beforeRender(Component.java:937)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.onBeforeRender(Component.java:3788)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.beforeRender(Component.java:937)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.onBeforeRender(Component.java:3788)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.beforeRender(Component.java:937)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.onBeforeRender(Component.java:3788)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.markup.html.form.Form.onBeforeRender(Form.java:1775)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.beforeRender(Component.java:937)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.onBeforeRender(Component.java:3788)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.beforeRender(Component.java:937)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.page.PartialPageUpdate.prepareComponent(PartialPageUpdate.java:322)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.page.PartialPageUpdate.writeComponents(PartialPageUpdate.java:250)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.page.PartialPageUpdate.writeTo(PartialPageUpdate.java:162)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.ajax.AjaxRequestHandler.respond(AjaxRequestHandler.java:384)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:912)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.request.RequestHandlerExecutor.execute(RequestHandlerExecutor.java:65)
~[wicket-request-8.1.0.jar:8.1.0]
at
org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:283)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:253)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:221)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.protocol.ws.AbstractUpgradeFilter.processRequestCycle(AbstractUpgradeFilter.java:70)
~[wicket-native-websocket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:204)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:286)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
~[catalina.jar:9.0.10]
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
~[catalina.jar:9.0.10]
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
~[catalina.jar:9.0.10]
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
~[catalina.jar:9.0.10]
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:491)
~[catalina.jar:9.0.10]
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
~[catalina.jar:9.0.10]
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
~[catalina.jar:9.0.10]
at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
~[catalina.jar:9.0.10]
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
~[catalina.jar:9.0.10]
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
~[catalina.jar:9.0.10]
at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
~[tomcat-coyote.jar:9.0.10]
at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
~[tomcat-coyote.jar:9.0.10]
at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:764)
~[tomcat-coyote.jar:9.0.10]
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1388)
~[tomcat-coyote.jar:9.0.10]
at
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
~[tomcat-coyote.jar:9.0.10]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
~[?:1.8.0_131]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
~[?:1.8.0_131]
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
~[tomcat-util.jar:9.0.10]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
Caused by: java.util.NoSuchElementException: No value present
at java.util.Optional.get(Optional.java:135) ~[?:1.8.0_131]
at
org.apache.syncope.client.console.wizards.any.PlainAttrs$PlainSchemas$1.populateItem(PlainAttrs.java:416)
~[classes/:2.1.2]
at
org.apache.wicket.markup.html.list.ListView.onPopulate(ListView.java:523)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.markup.repeater.AbstractRepeater.onBeforeRender(AbstractRepeater.java:124)
~[wicket-core-8.1.0.jar:8.1.0]
at org.apache.wicket.Component.beforeRender(Component.java:937)
~[wicket-core-8.1.0.jar:8.1.0]
at
org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
~[wicket-core-8.1.0.jar:8.1.0]
... 56 more
This is happening in
org.apache.syncope.client.console.wizards.any.PlainSchema class'
populateItem method. The value for
previousObject.getPlainAttr(attrTO.getSchema() will never be null because it
is returning an optional object. Also, I believe the OR condition should be
AND condition.
if (previousObject != null
&&
(*previousObject.getPlainAttr(attrTO.getSchema()) == null*
*||* !ListUtils.isEqualList(
ListUtils.select(previousObject.getPlainAttr(attrTO.getSchema()).get().getValues(),
object ->
StringUtils.isNotEmpty(object)),
ListUtils.select(attrTO.getValues(),
object -> StringUtils.isNotEmpty(object))))) {
List<String> oldValues =
previousObject.getPlainAttr(attrTO.getSchema()) == null
? Collections.<String>emptyList()
:
previousObject.getPlainAttr(attrTO.getSchema()).get().getValues();
panel.showExternAction(new
LabelInfo("externalAction", oldValues));
}
The change I made locally that seemed to correct the issue is:
if (previousObject != null
&&
(previousObject.getPlainAttr(attrTO.getSchema())*.isPresent()*
*&&* !ListUtils.isEqualList(
ListUtils.select(previousObject.getPlainAttr(attrTO.getSchema()).get().getValues(),
object ->
StringUtils.isNotEmpty(object)),
ListUtils.select(attrTO.getValues(), object ->
StringUtils.isNotEmpty(object))))) {
List<String> oldValues =
previousObject.getPlainAttr(attrTO.getSchema()) == null
? Collections.<String>emptyList()
:
previousObject.getPlainAttr(attrTO.getSchema()).get().getValues();
panel.showExternAction(new
LabelInfo("externalAction", oldValues));
}
Can you confirm this is the correct fix?
Phil
--
Sent from: http://syncope-user.1051894.n5.nabble.com/