You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@syncope.apache.org by varontron <va...@gmail.com> on 2018/04/17 15:14:27 UTC

Dashboard exception - approvals

Hi,

Unable to load dashboard due to "Unable to find property: 'null' for
component:
body:approvalsWidget:latestAlertsList:latestAlerts:0:alert:approval:key..."

Steps to reproduce:

Deployed 2.0.9-SNAPSHOT
Configured policies, realm, role
Using default schemas
(No resources, users, or groups created)
Re-deployed with '-P all' 
Updated role with WORKFLOW entitlements (though no users assigned to role
yet)
Configured approval form in Activiti Approval User Task per Reference Guide
Self-registered user with enduser ui
Dashboard caused exception:

Last cause: Unable to find property: 'null' for component:
body:approvalsWidget:latestAlertsList:latestAlerts:0:alert:approval:key
[class=org.apache.wicket.markup.html.basic.Label]. Locale: null, style: null
WicketMessage: An error occurred while getting the model object for
Component: [Component id = key, page =
org.apache.syncope.client.console.pages.Dashboard, path =
body:approvalsWidget:latestAlertsList:latestAlerts:0:alert:approval:key,
type = org.apache.wicket.markup.html.basic.Label, isVisible = true,
isVersioned = true, markup = [markup =
jar:file:/var/lib/tomcat8/webapps/syncope-console/WEB-INF/lib/syncope-client-console-2.0.9-SNAPSHOT.jar!/org/apache/syncope/client/console/widgets/ApprovalsWidget$InnerPanel.html
<p wicket:id="key"></p>, index = 0, current =  '<p wicket:id="key">' (line
0, column 0)]]

Did I leave out a config step?  
Is this resolvable without dropping the db?
Is it possible to catch the exception so as not to break the dashboard?

Thanks,
Dave

-----
http://analgesicsolutions.com
https://github.com/Novartis/YADA

--
Sent from: http://syncope-dev.1063484.n5.nabble.com/

Re: Dashboard exception - approvals

Posted by Dave Varon <va...@gmail.com>.
Hi,

Indeed there was a configuration issue, which I've now corrected.  Here is
a breakdown for future readers:

Retrieving the workflow via:  curl -X GET
"http://host:port/syncope/rest/workflows/USER/userWorkflow"
-H "accept: */*" -H "X-Syncope-Domain: Master" -H "Authorization: Basic ..."

revealed the 'userTask' below which has no 'activiti:formKey' attribute.

    <userTask id="active" name="Active">

      <extensionElements>

        <activiti:formProperty id="username" name="Username" type="string"
expression="${user.username}" writable="false"/>

        <activiti:formProperty id="approve" name="Approve?" type="boolean"
variable="approve" required="true"/>

        <activiti:formProperty id="rejectReason" name="Reason for
rejecting" type="string" variable="rejectReason"/>

    </extensionElements>

    </userTask>


To resolve the issue,  I modified the workflow (restoring the userTask to
the content-less default <userTask id="active" name="Active/> using:


curl -X PUT "http://host:port/syncope/rest/workflows/USER/userWorkflow" -H
"accept: */*" -H "X-Syncope-Domain: Master" -H "Authorization: Basic ..."
-H "Content-Type: application/xml" -d "<?xml...


Then I requested:   curl -X GET
"http://host:port/syncope/rest/userworkflow/forms"
-H "accept: application/json" -H "X-Syncope-Domain: Master" -H
"Authorization: Basic ..."

which contained the null key, but also the affected new user key.


[

  {

    "username": ".....",

    "taskId": "7554",

    "key": null,

    "createTime": "2018-04-17T14:23:06.080+0000",

    "dueDate": null,

    "owner": null,

    "userTO": {

      "@class": "org.apache.syncope.common.lib.to.UserTO",

      "key": "db1ab1a4-0e2f-422e-9ab1-a40e2fb22e4a",

      "type": "USER",


I then deleted the user with:    curl -X DELETE "http://host:port/syncope/
rest/users/db1ab1a4-0e2f-422e-9ab1-a40e2fb22e4a" -H "accept:
application/json" -H "Prefer: return-content" -H "X-Syncope-Domain: Master"
-H "Authorization: Basic ..."


and was able to login to the console to try again.

Thanks as always for all your guidance.

Dave

Re: Dashboard exception - approvals

Posted by Francesco Chicchiriccò <il...@apache.org>.
On 18/04/2018 01:14, Dave Varon wrote:
> Hi,
>
> The response body (pretty print at bottom) does in fact contain
> "key":null.   FWIW there are no derived or virtual schemas, or groups
> configured, 'email' is the only plain schema, and there are no resources.

That 'key' value is only set by

https://github.com/apache/syncope/blob/2_0_X/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java#L550

with the value coming from the actual form definition.

I suspect that there is something wrong in your current workflow 
definition: could you please provide it?

> FYI some tangential weirdness:  tomcat/syncope is sitting behind apache
> httpd. If I use the default port (443), either explicitly or implicitly,
> the server url constructed for swagger is "https://host:-1/syncope/rest".
> This seems broken.  Çan it be resolved somehow?  I couldn't find any
> config.  As one might expect, this results in 404.
>
> This is obv not a problem with curl, nor if I connect to tomcat directly in
> browser on non-ssl port 8000

Swagger UI relies on /syncope/rest/openapi.json, the servers > url 
field, to construct the URLs.
 From http://syncope-vm.apache.org:9080/syncope/rest/openapi.json for 
example, I can see that the value is

"servers": [
{
"url": "http://syncope-vm.apache.org:9080/syncope/rest"
}
],

Such value is dynamically derived from the URL used to access the 
openapi.json resource, and is set by CXF in

https://github.com/apache/cxf/blob/3.1.x-fixes/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtils.java#L418-L446

Possibly, the method use to reconstruct the request URL does not work 
properly with your reverse proxy setup.

Regards.

-- 
Francesco Chicchiriccò

Tirasa - Open Source Excellence
http://www.tirasa.net/

Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/


Re: Dashboard exception - approvals

Posted by Dave Varon <va...@gmail.com>.
Hi,

The response body (pretty print at bottom) does in fact contain
"key":null.   FWIW there are no derived or virtual schemas, or groups
configured, 'email' is the only plain schema, and there are no resources.

[{"username":"varontron","taskId":"7554","key":null,"createTime":"2018-04-17T14:23:06.080+0000","dueDate":null,"owner":null,"userTO":{"@class":"org.apache.syncope.common.lib.to.UserTO","key":"db1ab1a4-0e2f-422e-9ab1-a40e2fb22e4a","type":"USER","realm":"/SRP","username":"varontron","creator":null,"creationDate":"2018-04-17T14:23:06.138+0000","lastModifier":null,"lastChangeDate":"2018-04-17T14:23:06.138+0000","status":null,"password":"xxxxxxxxxxxxxxx","token":null,"tokenExpireTime":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":"48400a54-6910-4237-800a-5469109237ee","securityAnswer":"xxxxxxxxxxxx","suspended":false,"mustChangePassword":false,"dynRealms":[],"auxClasses":[],"plainAttrs":[{"schemaInfo":null,"schema":"email","values":["
varontron@gmail.com"]}],"derAttrs":[],"virAttrs":[],"resources":[],"roles":[],"dynRoles":[],"relationships":[],"memberships":[],"dynMemberships":[]},"userPatch":null,"workflowFormProperties":[{"id":"username","name":"Username","type":"String","value":"varontron","readable":true,"writable":false,"required":false,"datePattern":null,"enumValues":{}},{"id":"approve","name":"Approve?","type":"Boolean","value":null,"readable":true,"writable":true,"required":true,"datePattern":null,"enumValues":{}},{"id":"rejectReason","name":"Reason
for
rejecting","type":"String","value":null,"readable":true,"writable":true,"required":false,"datePattern":null,"enumValues":{}}]}]


FYI some tangential weirdness:  tomcat/syncope is sitting behind apache
httpd. If I use the default port (443), either explicitly or implicitly,
the server url constructed for swagger is "https://host:-1/syncope/rest".
This seems broken.  Çan it be resolved somehow?  I couldn't find any
config.  As one might expect, this results in 404.

This is obv not a problem with curl, nor if I connect to tomcat directly in
browser on non-ssl port 8000

Thanks,
Dave

[
  {
    "username": "varontron",
    "taskId": "7554",
    "key": null,
    "createTime": "2018-04-17T14:23:06.080+0000",
    "dueDate": null,
    "owner": null,
    "userTO": {
      "@class": "org.apache.syncope.common.lib.to.UserTO",
      "key": "db1ab1a4-0e2f-422e-9ab1-a40e2fb22e4a",
      "type": "USER",
      "realm": "/SRP",
      "username": "varontron",
      "creator": null,
      "creationDate": "2018-04-17T14:23:06.138+0000",
      "lastModifier": null,
      "lastChangeDate": "2018-04-17T14:23:06.138+0000",
      "status": null,
      "password": "xxxxxxxxxxxxxxx",
      "token": null,
      "tokenExpireTime": null,
      "lastLoginDate": null,
      "changePwdDate": null,
      "failedLogins": null,
      "securityQuestion": "48400a54-6910-4237-800a-5469109237ee",
      "securityAnswer": "xxxxxxxxxxxx",
      "suspended": false,
      "mustChangePassword": false,
      "dynRealms": [],
      "auxClasses": [],
      "plainAttrs": [
        {
          "schemaInfo": null,
          "schema": "email",
          "values": [
            "varontron@gmail.com"
          ]
        }
      ],
      "derAttrs": [],
      "virAttrs": [],
      "resources": [],
      "roles": [],
      "dynRoles": [],
      "relationships": [],
      "memberships": [],
      "dynMemberships": []
    },
    "userPatch": null,
    "workflowFormProperties": [
      {
        "id": "username",
        "name": "Username",
        "type": "String",
        "value": "varontron",
        "readable": true,
        "writable": false,
        "required": false,
        "datePattern": null,
        "enumValues": {}
      },
      {
        "id": "approve",
        "name": "Approve?",
        "type": "Boolean",
        "value": null,
        "readable": true,
        "writable": true,
        "required": true,
        "datePattern": null,
        "enumValues": {}
      },
      {
        "id": "rejectReason",
        "name": "Reason for rejecting",
        "type": "String",
        "value": null,
        "readable": true,
        "writable": true,
        "required": false,
        "datePattern": null,
        "enumValues": {}
      }
    ]
  }
]



An

Re: Dashboard exception - approvals

Posted by Francesco Chicchiriccò <il...@apache.org>.
On 17/04/2018 17:39, varontron wrote:
> Hi,
>
> Yes I deployed the generated war files, thus I was able to update the
> default Activiti "User Workflow" with the approval form extensionElements as
> described in
> https://ci.apache.org/projects/syncope/2_0_X/reference-guide.html#approval
>
> Here's the trace (it's all wicket):

It seems that at least one of the forms have a null key; to check, go to

http://host:port/syncope/swagger

then to UserWorkflow > GET

click "Try out" then "Execute" and paste the response body.

Regards.

P.S. It's better to use the user ML for such e-mails: please use that 
for the future, thanks.

-- 
Francesco Chicchiriccò

Tirasa - Open Source Excellence
http://www.tirasa.net/

Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/


Re: Dashboard exception - approvals

Posted by varontron <va...@gmail.com>.
Hi,

Yes I deployed the generated war files, thus I was able to update the
default Activiti "User Workflow" with the approval form extensionElements as
described in
https://ci.apache.org/projects/syncope/2_0_X/reference-guide.html#approval

Here's the trace (it's all wicket):

14:29:30.993 ERROR
org.apache.syncope.client.console.SyncopeConsoleRequestCycleListener -
Exception found
org.apache.wicket.WicketRuntimeException: An error occurred while getting
the model object for Component: [Component id = key, page =
org.apache.syncope.client.console.pages.Dashboard, path =
body:approvalsWidget:latestAlertsList:latestAlerts:0:alert:approval:key,
type = org.apache.wicket.markup.html.basic.Label, isVisible = true,
isVersioned = true, markup = [markup =
jar:file:/var/lib/tomcat8/webapps/syncope-console/WEB-INF/lib/syncope-client-console-2.0.9-SNAPSHOT.jar!/org/apache/syncope/client/console/widgets/ApprovalsWidget$InnerPanel.html
<p wicket:id="key"></p>, index = 0, current =  '<p wicket:id="key">' (line
0, column 0)]]
	at org.apache.wicket.Component.getDefaultModelObject(Component.java:1651)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.Component.getDefaultModelObjectAsString(Component.java:1674)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.markup.html.basic.Label.onComponentTagBody(Label.java:115)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:70)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.internalRenderComponent(Component.java:2601)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.markup.html.WebComponent.onRender(WebComponent.java:60)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.internalRender(Component.java:2401)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.render(Component.java:2329)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1515)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1718)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1693)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1648)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.markup.html.link.AbstractLink.onComponentTagBody(AbstractLink.java:82)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:70)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.internalRenderComponent(Component.java:2601)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1657)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.internalRender(Component.java:2401)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.render(Component.java:2329)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1515)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1718)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1693)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.MarkupContainer.renderAssociatedMarkup(MarkupContainer.java:799)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.markup.html.panel.AssociatedMarkupSourcingStrategy.renderAssociatedMarkup(AssociatedMarkupSourcingStrategy.java:77)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy.onComponentTagBody(PanelMarkupSourcingStrategy.java:112)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.internalRenderComponent(Component.java:2601)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1657)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.internalRender(Component.java:2401)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.render(Component.java:2329)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1515)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1718)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1693)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1648)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:70)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.internalRenderComponent(Component.java:2601)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1657)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.internalRender(Component.java:2401)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.render(Component.java:2329)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.markup.html.list.ListView.renderItem(ListView.java:584)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.markup.html.list.ListView.renderChild(ListView.java:573)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.markup.repeater.AbstractRepeater.onRender(AbstractRepeater.java:102)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.internalRender(Component.java:2401)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.render(Component.java:2329)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1515)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1718)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1693)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1648)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:70)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.internalRenderComponent(Component.java:2601)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1657)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.internalRender(Component.java:2401)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.render(Component.java:2329)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1515)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1718)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1693)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.MarkupContainer.renderAssociatedMarkup(MarkupContainer.java:799)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.markup.html.panel.AssociatedMarkupSourcingStrategy.renderAssociatedMarkup(AssociatedMarkupSourcingStrategy.java:77)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy.onComponentTagBody(PanelMarkupSourcingStrategy.java:112)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.internalRenderComponent(Component.java:2601)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1657)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.internalRender(Component.java:2401)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.render(Component.java:2329)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1515)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1718)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1693)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1648)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:70)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.internalRenderComponent(Component.java:2601)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1657)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.internalRender(Component.java:2401)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.render(Component.java:2329)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1515)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1718)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Page.onRender(Page.java:879)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.markup.html.WebPage.onRender(WebPage.java:141)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.internalRender(Component.java:2401)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.render(Component.java:2329)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Page.renderPage(Page.java:1018)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:124)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:236)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:175)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:895)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
~[wicket-request-7.10.0.jar:7.10.0]
	at
org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.protocol.ws.AbstractUpgradeFilter.processRequestCycle(AbstractUpgradeFilter.java:70)
~[wicket-native-websocket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:284)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
~[tomcat8-catalina-8.0.32.jar:8.0.32]
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
~[tomcat8-catalina-8.0.32.jar:8.0.32]
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
~[tomcat8-catalina-8.0.32.jar:8.0.32]
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
~[tomcat8-catalina-8.0.32.jar:8.0.32]
	at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
~[tomcat8-catalina-8.0.32.jar:8.0.32]
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
~[tomcat8-catalina-8.0.32.jar:8.0.32]
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
~[tomcat8-catalina-8.0.32.jar:8.0.32]
	at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
~[tomcat8-catalina-8.0.32.jar:8.0.32]
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
~[tomcat8-catalina-8.0.32.jar:8.0.32]
	at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
~[tomcat8-catalina-8.0.32.jar:8.0.32]
	at
org.apache.coyote.ajp.AbstractAjpProcessor.process(AbstractAjpProcessor.java:868)
~[tomcat8-coyote-8.0.32.jar:8.0.32]
	at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
~[tomcat8-coyote-8.0.32.jar:8.0.32]
	at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1504)
~[tomcat8-coyote-8.0.32.jar:8.0.32]
	at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1460)
~[tomcat8-coyote-8.0.32.jar:8.0.32]
	at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
~[?:1.8.0_131]
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
~[?:1.8.0_131]
	at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
~[tomcat8-util-8.0.32.jar:8.0.32]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
Caused by: java.util.MissingResourceException: Unable to find property:
'null' for component:
body:approvalsWidget:latestAlertsList:latestAlerts:0:alert:approval:key
[class=org.apache.wicket.markup.html.basic.Label]. Locale: null, style: null
	at org.apache.wicket.Localizer.getString(Localizer.java:268)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.model.ResourceModel$AssignmentWrapper.load(ResourceModel.java:129)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.model.ResourceModel$AssignmentWrapper.load(ResourceModel.java:99)
~[wicket-core-7.10.0.jar:7.10.0]
	at
org.apache.wicket.model.LoadableDetachableModel.getObject(LoadableDetachableModel.java:135)
~[wicket-core-7.10.0.jar:7.10.0]
	at org.apache.wicket.Component.getDefaultModelObject(Component.java:1646)
~[wicket-core-7.10.0.jar:7.10.0]
	... 105 more

-----
http://analgesicsolutions.com
https://github.com/Novartis/YADA

--
Sent from: http://syncope-dev.1063484.n5.nabble.com/

Re: Dashboard exception - approvals

Posted by Francesco Chicchiriccò <il...@apache.org>.
Hi,
approval can only work with Activiti or Flowable.

When you say 'Re-deployed with '-P all' ', do you mean you deployed the 
generated WAR files after building with all parameters indicated in

https://syncope.apache.org/docs/reference-guide.html#customization

e.g.

mvn -Pall clean verify \
    -Dconf.directory=/opt/syncope/conf \
    -Dbundles.directory=/opt/syncope/bundles \
    -Dlog.directory=/opt/syncope/log

?

Could you please attach the whole stacktrace from the console logs?

Regards.

On 17/04/2018 17:14, varontron wrote:
> Hi,
>
> Unable to load dashboard due to "Unable to find property: 'null' for
> component:
> body:approvalsWidget:latestAlertsList:latestAlerts:0:alert:approval:key..."
>
> Steps to reproduce:
>
> Deployed 2.0.9-SNAPSHOT
> Configured policies, realm, role
> Using default schemas
> (No resources, users, or groups created)
> Re-deployed with '-P all'
> Updated role with WORKFLOW entitlements (though no users assigned to role
> yet)
> Configured approval form in Activiti Approval User Task per Reference Guide
> Self-registered user with enduser ui
> Dashboard caused exception:
>
> Last cause: Unable to find property: 'null' for component:
> body:approvalsWidget:latestAlertsList:latestAlerts:0:alert:approval:key
> [class=org.apache.wicket.markup.html.basic.Label]. Locale: null, style: null
> WicketMessage: An error occurred while getting the model object for
> Component: [Component id = key, page =
> org.apache.syncope.client.console.pages.Dashboard, path =
> body:approvalsWidget:latestAlertsList:latestAlerts:0:alert:approval:key,
> type = org.apache.wicket.markup.html.basic.Label, isVisible = true,
> isVersioned = true, markup = [markup =
> jar:file:/var/lib/tomcat8/webapps/syncope-console/WEB-INF/lib/syncope-client-console-2.0.9-SNAPSHOT.jar!/org/apache/syncope/client/console/widgets/ApprovalsWidget$InnerPanel.html
> <p wicket:id="key"></p>, index = 0, current =  '<p wicket:id="key">' (line
> 0, column 0)]]
>
> Did I leave out a config step?
> Is this resolvable without dropping the db?
> Is it possible to catch the exception so as not to break the dashboard?
>
> Thanks,
> Dave
>
> -----
> http://analgesicsolutions.com
> https://github.com/Novartis/YADA
>
> --
> Sent from: http://syncope-dev.1063484.n5.nabble.com/


-- 
Francesco Chicchiriccò

Tirasa - Open Source Excellence
http://www.tirasa.net/

Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/