[jira] [Commented] (UNOMI-180) Implement CXS GraphQL specification

2020-01-24 Thread Jeroen van der Wal (Jira)


[ 
https://issues.apache.org/jira/browse/UNOMI-180?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17023022#comment-17023022
 ] 

Jeroen van der Wal commented on UNOMI-180:
--

The schema specification has moved to a different location:

[|https://github.com/oasis-tcs/cxs-cdp/blob/master/server/index.js] 
[https://github.com/oasis-tcs/cxs-cdp/tree/master/server]

> Implement CXS GraphQL specification
> ---
>
> Key: UNOMI-180
> URL: https://issues.apache.org/jira/browse/UNOMI-180
> Project: Apache Unomi
>  Issue Type: Improvement
>  Components: core
>Affects Versions: 1.3.0-incubating
>Reporter: Serge Huber
>Priority: Major
> Fix For: 2.0.0
>
>
> We should implement the CXS specification, as we are supposed to. The 
> specification has now switched from REST API to GraphQL API, so the work will 
> begin on implementing GraphQL in a separate branch.
> Basically we are implementing the specification that is tracked here : 
> [https://github.com/sergehuber/contextserver-graphql-api/blob/master/javascript/cxs-graphql-schema.js]
> The idea is to implement this API on top of the existing data and structure 
> already inside Apache Unomi. Some model adjustements might be needed but the 
> goal is to keep the REST API compatible. Hopefully this will be possible :)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (ISIS-1020) Dropdown window opens top left of the screen

2016-07-05 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-1020?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-1020:
-
Affects Version/s: 1.12.2

> Dropdown window opens top left of the screen
> 
>
> Key: ISIS-1020
> URL: https://issues.apache.org/jira/browse/ISIS-1020
> Project: Isis
>  Issue Type: Bug
>  Components: Core: Viewer: Wicket
>Affects Versions: core-1.8.0, 1.12.2
>Reporter: Jeroen van der Wal
> Fix For: 1.10.0
>
>
> The original issue reported here was that the select2 component sometimes 
> renders the drop-down top-left of the screen.
> This ticket has been rescoped to just upgrade select2 to 3.5.2.  This was 
> attempted as a fix, but does not address the issue.
> We believe that select2 v4 will fix the issue, for this see ISIS-1224.  Note 
> that this depends upon Wicket 7.x (ISIS-1223).
> If select2 v4 does not fix the issue, then we have also raised a ticket to 
> rework using the selectize component (ISIS-1225).  This is also our preferred 
> component to implement multi-select (ISIS-709).
> ~
> Screencast to demonstrate the original issue in Estatio: 
> https://drive.google.com/file/d/0B2jd2Sl73mDBZ0lqYUhtVjVRamc/view?usp=sharing
> This is reproducible in both IE11 and Chrome.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Reopened] (ISIS-1020) upgrade select2 to v3.5.2 (was: Dropdown window opens top left of the screen)

2016-07-05 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-1020?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal reopened ISIS-1020:
--

This issue still needs some TLC

> upgrade select2 to v3.5.2 (was: Dropdown window opens top left of the screen)
> -
>
> Key: ISIS-1020
> URL: https://issues.apache.org/jira/browse/ISIS-1020
> Project: Isis
>  Issue Type: Bug
>  Components: Core: Viewer: Wicket
>Affects Versions: core-1.8.0
>Reporter: Jeroen van der Wal
> Fix For: 1.10.0
>
>
> The original issue reported here was that the select2 component sometimes 
> renders the drop-down top-left of the screen.
> This ticket has been rescoped to just upgrade select2 to 3.5.2.  This was 
> attempted as a fix, but does not address the issue.
> We believe that select2 v4 will fix the issue, for this see ISIS-1224.  Note 
> that this depends upon Wicket 7.x (ISIS-1223).
> If select2 v4 does not fix the issue, then we have also raised a ticket to 
> rework using the selectize component (ISIS-1225).  This is also our preferred 
> component to implement multi-select (ISIS-709).
> ~
> Screencast to demonstrate the original issue in Estatio: 
> https://drive.google.com/file/d/0B2jd2Sl73mDBZ0lqYUhtVjVRamc/view?usp=sharing
> This is reproducible in both IE11 and Chrome.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-1020) Dropdown window opens top left of the screen

2016-07-05 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-1020?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-1020:
-
Summary: Dropdown window opens top left of the screen  (was: upgrade 
select2 to v3.5.2 (was: Dropdown window opens top left of the screen))

> Dropdown window opens top left of the screen
> 
>
> Key: ISIS-1020
> URL: https://issues.apache.org/jira/browse/ISIS-1020
> Project: Isis
>  Issue Type: Bug
>  Components: Core: Viewer: Wicket
>Affects Versions: core-1.8.0
>Reporter: Jeroen van der Wal
> Fix For: 1.10.0
>
>
> The original issue reported here was that the select2 component sometimes 
> renders the drop-down top-left of the screen.
> This ticket has been rescoped to just upgrade select2 to 3.5.2.  This was 
> attempted as a fix, but does not address the issue.
> We believe that select2 v4 will fix the issue, for this see ISIS-1224.  Note 
> that this depends upon Wicket 7.x (ISIS-1223).
> If select2 v4 does not fix the issue, then we have also raised a ticket to 
> rework using the selectize component (ISIS-1225).  This is also our preferred 
> component to implement multi-select (ISIS-709).
> ~
> Screencast to demonstrate the original issue in Estatio: 
> https://drive.google.com/file/d/0B2jd2Sl73mDBZ0lqYUhtVjVRamc/view?usp=sharing
> This is reproducible in both IE11 and Chrome.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-1334) Create standalone JAR of an Isis app

2016-06-14 Thread Jeroen van der Wal (JIRA)

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

Jeroen van der Wal commented on ISIS-1334:
--

Has anybody experience with Undertow [1]?

[1] http://undertow.io/


> Create standalone JAR of an Isis app
> 
>
> Key: ISIS-1334
> URL: https://issues.apache.org/jira/browse/ISIS-1334
> Project: Isis
>  Issue Type: New Feature
>Affects Versions: 1.11.1
>Reporter: Dan Haywood
>Assignee: Dan Haywood
>Priority: Minor
> Fix For: 1.14.0
>
>
> Being able to have a standalone jar (eg java -jar xxx.jar), which I can see 
> would be useful for microservice type deployments.
> using assembly plugin and our current org.apache.isis.WebServer does not 
> quite work, since our bootstrapping code assumes that config files can be 
> read as files rather than in the classpath.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-1303) Rename the project to better describe its values and purpose

2016-02-22 Thread Jeroen van der Wal (JIRA)

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

Jeroen van der Wal commented on ISIS-1303:
--

When I pitch Apache Isis I always use phrases like "single layer application 
development", "layerless application development" or simply "no layers".

> Rename the project to better describe its values and purpose
> 
>
> Key: ISIS-1303
> URL: https://issues.apache.org/jira/browse/ISIS-1303
> Project: Isis
>  Issue Type: Wish
>Affects Versions: 1.11.1
>Reporter: Dan Haywood
>Assignee: Dan Haywood
> Fix For: 1.13.0
>
> Attachments: ApacheFarthing.jpg, ApacheFarthing.jpg, 
> ApacheGestalt.jpg, Offset-curves-of-sinus-curve.svg
>
>
> In the past there have been a couple of discussions regarding renaming the 
> project, the reason generally cited being the potential embarrassment of 
> sharing a name with the jihadist militant group [1] currently prominent in 
> the headlines.  After due discussion on the mailing lists the prevailing view 
> has been to retain our name: "we were here first".  
> Until now I've concurred with that view also... after all, I originally came 
> up with the name "Isis", originally based on the name of the Thames as it 
> flows through Oxford [2] (many of the original authors of the framework live 
> within Oxfordshire, UK).
> Separately to that discussion, we have the issue of marketing.  Originally we 
> marketed ourselves as a framework implementing the "naked objects" pattern 
> [3]; the original name of the framework (prior to Apache) was of course the 
> Naked Objects Framework.  However, this pattern is either not well-known or 
> is misunderstood (only a low proportion of developers that encounter the idea 
> immediately "get it").  The crudity of the original user interfaces didn't 
> help.  And the name also, of course, can cause embarrassment in some cultures.
> Then, when domain-driven design [4] came along as a movement, that seemed an 
> obvious platform upon which to position the framework: we obviously share the 
> core belief that the domain is the most important bit of the system.  However 
> - and I still find this surprising - despite attempts otherwise we haven't 
> really made too much of an impression in that community.  The fact that the 
> DDD community got massively sidetracked for a while by the CQRS pattern is 
> perhaps part of it.   I also often detect the view that DDD should imply not 
> using a framework.  The irony of course is that in rejecting framework such 
> developers actually have to write more infrastructure code vs business domain 
> code.
> Also, the fit is perhaps not all that good after all.  In the DDD community I 
> don't see anyone talking about modules... one of the named patterns, and a 
> major focus of our framework, but missing from DDD talks.  Instead they get 
> side-tracked talking only about aggregate roots or bounded contexts; all well 
> and good, but over-emphasised).
> [Aside: Indeed, I raised the topic of modules with Eric Evans himself (in 
> person), and he agreed there was little emphasis.  When I described our 
> framework's use of domain events to hook modules together (along with vetoing 
> behaviour we support) he admitted it was a new approach/pattern to him...]
> Anyway, so DDD - which looked so promising - hasn't delivered.  They might 
> come around to us one day, but it's probably time to define our own 
> individual space.  Also, in the same way that everyone takes agile 
> development for granted as the "de facto", we ought to simply take DDD for 
> granted too... "of course you will be doing DDD, but are you doing it well?"
> What we need to better market the framework is some other pattern or concept 
> or hook, and become known as the framework that best supports that idea.  
> There are several candidates:
> - hexagonal architecture (also called ports and adapters, or the onion 
> architecture, and related to the clean architecture)
> - don't repeat yourself principle
> - aspect oriented programming (naked objects pattern is really the 
> recognition that UI presentation is a cross-cutting concern)
> - the general concept of modularity
> - DCI (data/context/interactions).
> - "clean" "pure" "essential" pojo programming model
> - agile, lean
> - breaking down barriers between IT and business
> Of these, I think that hexagonal architecture looks the best fit; it is well 
> regarded as a concept among the "cognoscenti", but there are surprisingly no 
> open source frameworks out there (at least in the Java space) that position 
> themselves as being the natural choice.
> Therefore, I think a name - and appropriate short tag line - based around 
> this idea of hexagonal architecture should be considered.
> 

[jira] [Created] (ISIS-1310) DomainObjectContainter#titleOf(..) does not resolve @Title annotated on private field

2016-02-17 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-1310:


 Summary: DomainObjectContainter#titleOf(..) does not resolve 
@Title annotated on private field
 Key: ISIS-1310
 URL: https://issues.apache.org/jira/browse/ISIS-1310
 Project: Isis
  Issue Type: Bug
  Components: Core
Affects Versions: 1.11.1
Reporter: Jeroen van der Wal
Assignee: Dan Haywood
Priority: Minor


DomainObjectContainter#titleOf(..) does not resolve @Title annotated on a 
private field.

As a workaround you can use the title() method to provide a title.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-1306) Enable graph visualisation in Wicket Viewer

2016-02-11 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-1306?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-1306:
-
Priority: Minor  (was: Major)

> Enable graph visualisation in Wicket Viewer
> ---
>
> Key: ISIS-1306
> URL: https://issues.apache.org/jira/browse/ISIS-1306
> Project: Isis
>  Issue Type: New Feature
>  Components: Core: Viewer: Wicket
>Reporter: Vladimir Nisevic
>Assignee: Dan Haywood
>Priority: Minor
>
> Would be nice to have possibility to visualize graphs with. e.g 
> http://graphviz.org/ or maybe with http://visjs.org/



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-1306) Enable graph visualisation in Wicket Viewer

2016-02-11 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-1306?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-1306:
-
Issue Type: Wish  (was: Brainstorming)

> Enable graph visualisation in Wicket Viewer
> ---
>
> Key: ISIS-1306
> URL: https://issues.apache.org/jira/browse/ISIS-1306
> Project: Isis
>  Issue Type: Wish
>  Components: Core: Viewer: Wicket
>Reporter: Vladimir Nisevic
>Assignee: Dan Haywood
>Priority: Minor
>
> Would be nice to have possibility to visualize graphs with. e.g 
> http://graphviz.org/ or maybe with http://visjs.org/



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-1306) Enable graph visualisation in Wicket Viewer

2016-02-11 Thread Jeroen van der Wal (JIRA)

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

Jeroen van der Wal commented on ISIS-1306:
--

This a rather vague requirement. Could you elaborate more? Perhaps spike a 
sample app?

> Enable graph visualisation in Wicket Viewer
> ---
>
> Key: ISIS-1306
> URL: https://issues.apache.org/jira/browse/ISIS-1306
> Project: Isis
>  Issue Type: Wish
>  Components: Core: Viewer: Wicket
>Reporter: Vladimir Nisevic
>Assignee: Dan Haywood
>Priority: Minor
>
> Would be nice to have possibility to visualize graphs with. e.g 
> http://graphviz.org/ or maybe with http://visjs.org/



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-1306) Enable graph visualisation in Wicket Viewer

2016-02-11 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-1306?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-1306:
-
Issue Type: Brainstorming  (was: New Feature)

> Enable graph visualisation in Wicket Viewer
> ---
>
> Key: ISIS-1306
> URL: https://issues.apache.org/jira/browse/ISIS-1306
> Project: Isis
>  Issue Type: Brainstorming
>  Components: Core: Viewer: Wicket
>Reporter: Vladimir Nisevic
>Assignee: Dan Haywood
>Priority: Minor
>
> Would be nice to have possibility to visualize graphs with. e.g 
> http://graphviz.org/ or maybe with http://visjs.org/



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-1209) Perform static analysis of all event subscribers so that we suppress the submission of events if we know that there are no subscribers in that type of event.

2015-11-19 Thread Jeroen van der Wal (JIRA)

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

Jeroen van der Wal commented on ISIS-1209:
--

If a developer creates events it might also be because he wants to allow other 
developers to override behaviour, like we do in the isisaddons. In practice 
this hooks are hardly ever used.

> Perform static analysis of all event subscribers so that we suppress the 
> submission of events if we know that there are no subscribers in that type of 
> event.
> -
>
> Key: ISIS-1209
> URL: https://issues.apache.org/jira/browse/ISIS-1209
> Project: Isis
>  Issue Type: Improvement
>  Components: Core
>Affects Versions: 1.9.0
>Reporter: Dan Haywood
>Assignee: Dan Haywood
> Fix For: 2.0.0
>
>
> ... on the basis that - I think - raising so many events is what is causing 
> the framework to be slower than once it was.
> Before doing this ticket we should test this theory first, though.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (ISIS-1209) Perform static analysis of all event subscribers so that we suppress the submission of events if we know that there are no subscribers in that type of event.

2015-11-19 Thread Jeroen van der Wal (JIRA)

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

Jeroen van der Wal edited comment on ISIS-1209 at 11/19/15 9:14 AM:


If a developer creates events it might also be because he wants to allow other 
developers to override behaviour, like we do in the isisaddons. In practice 
these hooks are hardly ever used.


was (Author: jcvanderwal):
If a developer creates events it might also be because he wants to allow other 
developers to override behaviour, like we do in the isisaddons. In practice 
this hooks are hardly ever used.

> Perform static analysis of all event subscribers so that we suppress the 
> submission of events if we know that there are no subscribers in that type of 
> event.
> -
>
> Key: ISIS-1209
> URL: https://issues.apache.org/jira/browse/ISIS-1209
> Project: Isis
>  Issue Type: Improvement
>  Components: Core
>Affects Versions: 1.9.0
>Reporter: Dan Haywood
>Assignee: Dan Haywood
> Fix For: 2.0.0
>
>
> ... on the basis that - I think - raising so many events is what is causing 
> the framework to be slower than once it was.
> Before doing this ticket we should test this theory first, though.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-1221) JSON Format Layouts not recognized with i18n translations in Wicket Viewer

2015-11-04 Thread Jeroen van der Wal (JIRA)

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

Jeroen van der Wal commented on ISIS-1221:
--

Ican reproduce the issue with your demo repo but haven't found time to look
into it in more detail. Will try to squeeze it in tomorrow.




> JSON Format Layouts not recognized with i18n translations in Wicket Viewer
> --
>
> Key: ISIS-1221
> URL: https://issues.apache.org/jira/browse/ISIS-1221
> Project: Isis
>  Issue Type: Bug
>  Components: Core: Viewer: Wicket
>Affects Versions: 1.9.0
> Environment: Windows Server, HSQLDB
>Reporter: Cesar Lugo
>Assignee: Dan Haywood
>
> I am working with Apache Isis Wicket viewer 1.9.0, and I have some form 
> layout json files to define the layout for some domain objects. I also added 
> a translation file (i18n) with some translations. When running the 
> application in the browser, when I am in “writing translations” mode it shows 
> the object form with the layout defined in the json file (ok), but when I 
> switch to “reading translations”, it goes back to the “default” layout, 
> ignoring the layout defined in the json file. 
> In regards to those modes, I am referring to the Apache wicket viewer menu 
> which, in prototype mode, has a "Prototyping" menu, which has an option 
> "Switch to Reading Translations". When you select that option and keep using 
> the application is when it loses the layouts defined in the json layout files.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (ISIS-1240) Derive icon from service when not provided

2015-11-04 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-1240:


 Summary: Derive icon from service when not provided
 Key: ISIS-1240
 URL: https://issues.apache.org/jira/browse/ISIS-1240
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: 1.9.0
Reporter: Jeroen van der Wal
Assignee: Dan Haywood
Priority: Minor


If no iconName method is provided for a service Isis searches for an icon equal 
to the service name. Additional to this behavior we could extend this  search 
by stripping off know service suffixes like "Service, Menu and Repository". As 
an example: the "PersonMenu" service will use the "Person" icon if no icon has 
been specified.










--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-803) Replace lifecycle methods with additional EventBus events.

2015-11-02 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-803?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-803:

Priority: Minor  (was: Major)

> Replace lifecycle methods with additional EventBus events.
> --
>
> Key: ISIS-803
> URL: https://issues.apache.org/jira/browse/ISIS-803
> Project: Isis
>  Issue Type: Improvement
>  Components: Core
>Affects Versions: core-1.5.0
>Reporter: Dan Haywood
>Assignee: Dan Haywood
>Priority: Minor
> Fix For: 1.11.0
>
>
> This issue is to remove a feature that is only partly implemented in the JDO 
> objectstore, namely the lifecycle methods.
> Jeroen and I were discussing this, and think they are possibly an 
> anti-pattern since they tend to lead to fragile code.
> Rather than have the object "pushing" changes to others, it would be better 
> if an event were broadcast via the EventBus.  That way a subscribing service 
> could pull appropriate changes and do whatever is necessary.
> ~~~
> Possible implementation:
> @DomainObject(
> domainEventOnLoad = ...,
> domainEventOnSave = ...,
> domainEventOnUpdate = ...,
> domainEventOnDelete = ...,
> )
> By using the corresponding associated phases, ie EXECUTING and EXECUTED, the 
> subscriber can act BEFORE and/or AFTER the domain object is loaded / 
> initially saved-persisted / updated / deleted.
> The "domainEventOnLoad" event would allow the user to "veto" a specific 
> domain entity instance (domain object) to be showed due to security or other 
> business reasons. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-1221) JSON Format Layouts not recognized with i18n translations in Wicket Viewer

2015-11-01 Thread Jeroen van der Wal (JIRA)

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

Jeroen van der Wal commented on ISIS-1221:
--

Hi Cesar, thanks for setting up the repo. I will check it out later today.




> JSON Format Layouts not recognized with i18n translations in Wicket Viewer
> --
>
> Key: ISIS-1221
> URL: https://issues.apache.org/jira/browse/ISIS-1221
> Project: Isis
>  Issue Type: Bug
>  Components: Core: Viewer: Wicket
>Affects Versions: 1.9.0
> Environment: Windows Server, HSQLDB
>Reporter: Cesar Lugo
>Assignee: Dan Haywood
>
> I am working with Apache Isis Wicket viewer 1.9.0, and I have some form 
> layout json files to define the layout for some domain objects. I also added 
> a translation file (i18n) with some translations. When running the 
> application in the browser, when I am in “writing translations” mode it shows 
> the object form with the layout defined in the json file (ok), but when I 
> switch to “reading translations”, it goes back to the “default” layout, 
> ignoring the layout defined in the json file. 
> In regards to those modes, I am referring to the Apache wicket viewer menu 
> which, in prototype mode, has a "Prototyping" menu, which has an option 
> "Switch to Reading Translations". When you select that option and keep using 
> the application is when it loses the layouts defined in the json layout files.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-1221) JSON Format Layouts not recognized with i18n translations in Wicket Viewer

2015-10-28 Thread Jeroen van der Wal (JIRA)

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

Jeroen van der Wal commented on ISIS-1221:
--

I was not able to reproduce this with the kitchensink app [1], running on 
1.9.0-SNAPSHOT (technically our 1.10.0 release candidate).

[1] https://github.com/isisaddons/isis-app-kitchensink





> JSON Format Layouts not recognized with i18n translations in Wicket Viewer
> --
>
> Key: ISIS-1221
> URL: https://issues.apache.org/jira/browse/ISIS-1221
> Project: Isis
>  Issue Type: Bug
>  Components: Core: Viewer: Wicket
>Affects Versions: 1.9.0
> Environment: Windows Server, HSQLDB
>Reporter: Cesar Lugo
>Assignee: Dan Haywood
>
> I am working with Apache Isis Wicket viewer 1.9.0, and I have some form 
> layout json files to define the layout for some domain objects. I also added 
> a translation file (i18n) with some translations. When running the 
> application in the browser, when I am in “writing translations” mode it shows 
> the object form with the layout defined in the json file (ok), but when I 
> switch to “reading translations”, it goes back to the “default” layout, 
> ignoring the layout defined in the json file. 
> In regards to those modes, I am referring to the Apache wicket viewer menu 
> which, in prototype mode, has a "Prototyping" menu, which has an option 
> "Switch to Reading Translations". When you select that option and keep using 
> the application is when it loses the layouts defined in the json layout files.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-542) Restrict which entities a service action is contributed to (as either a contributed action or contributed assocation).

2015-09-10 Thread Jeroen van der Wal (JIRA)

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

Jeroen van der Wal commented on ISIS-542:
-

+2 from Jeroen & Johan ;-)

Since we're using contributions more and more we like to start working on this 
issue. We suggest extending @ParameterLayout with a contributed parameter.

Something like this:

public class PartyContributions{
public void moveFundsTo(
final Party fromParty,
final @ParameterLayout(contributed = Contributed.Never) Party toParty) {

}
}

> Restrict which entities a service action is contributed to (as either a 
> contributed action or contributed assocation).
> --
>
> Key: ISIS-542
> URL: https://issues.apache.org/jira/browse/ISIS-542
> Project: Isis
>  Issue Type: New Feature
>  Components: Core
>Affects Versions: core-1.2.0
>Reporter: Dan Haywood
>Assignee: Dan Haywood
> Fix For: 1.12.0
>
>
> For example, an action
> void foo(A a, B b) { ... }
> will be contributed to both entities A and B.  We might want to allow it to 
> be contributed to one or the other.
> Suggestion is that @NotContributed annotation applies to action parameters 
> (with current behaviour maintained for compatibility as the default for all 
> parameters of the action):
> eg
> void foo(
> @NotContributed(As.Action) A, 
> @NotContributed(As.Association) B) { ... }



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (ISIS-1193) void actions return 404 Not Found when called through restful viewer

2015-08-26 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-1193:


 Summary: void actions return 404 Not Found when called through 
restful viewer
 Key: ISIS-1193
 URL: https://issues.apache.org/jira/browse/ISIS-1193
 Project: Isis
  Issue Type: Bug
  Components: Core: Viewer: RestfulObjects
Affects Versions: 1.9.0
Reporter: Jeroen van der Wal
Assignee: Dan Haywood


We have  method with this signature:
@Action(semantics = SemanticsOf.IDEMPOTENT)
public void putTax(
final String atPath,
final String reference,
final String name,
final String description,
final @Parameter(optionality = Optionality.OPTIONAL) String 
externalReference,
final BigDecimal ratePercentage,
final LocalDate rateStartDate,
final @Parameter(optionality = Optionality.OPTIONAL) String 
rateExternalReference) {
...
}

When putting a valid payload on the endpoint the viewer returns a 404 Not 
Found. Since the payload is processed correctly expect a 200 OK.  




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (JDO-746) Allow wildcard matching on StringExpression in typesafe queries (fluent API)

2015-08-24 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/JDO-746?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14709044#comment-14709044
 ] 

Jeroen van der Wal commented on JDO-746:


Many thanks.

 Allow wildcard matching on StringExpression in typesafe queries (fluent API)
 

 Key: JDO-746
 URL: https://issues.apache.org/jira/browse/JDO-746
 Project: JDO
  Issue Type: Improvement
  Components: api, specification, tck
Affects Versions: JDO 3.2
Reporter: Jeroen van der Wal
 Fix For: JDO 3.2


 Currently JDOQL 3.1 specifies the matches() function. We are using the fluent 
 API in Datanucleus 4.2 however the 3.2 implementation of the StringExpression 
 does not contain a matches() function.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (JDO-746) Allow wildcard matching on StringExpression in typesafe queries (fluent API)

2015-08-20 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created JDO-746:
--

 Summary: Allow wildcard matching on StringExpression in typesafe 
queries (fluent API)
 Key: JDO-746
 URL: https://issues.apache.org/jira/browse/JDO-746
 Project: JDO
  Issue Type: Improvement
Affects Versions: JDO 3.2
Reporter: Jeroen van der Wal


Currently JDOQL 3.1 specifies the matches() function. We are using the fluent 
API in Datanucleus 4.2 however the 3.2 implementation of the StringExpression 
does not contain a matches() function.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (ISIS-1070) Add header and handle double quotes in translations.pot file

2015-03-04 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-1070:


 Summary: Add header and handle double quotes in translations.pot 
file 
 Key: ISIS-1070
 URL: https://issues.apache.org/jira/browse/ISIS-1070
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: core-1.8.0
Reporter: Jeroen van der Wal
Assignee: Dan Haywood
Priority: Minor
 Fix For: core-1.9.0


Some translation services are more picky about the format of the .pot file than 
others. I countered two issues when trying a different service:

1. Add compliant header
More about headers in this paper [1]  and the gettext documentation [2]. I've 
successfully managed to upload a .pot file to a translation service by adding 
this header: 
{code}
msgid 
msgstr 
Project-Id-Version: \n
POT-Creation-Date: 2015-03-04 12:52+0100\n
MIME-Version: 1.0\n
Content-Type: text/plain; charset=UTF-8\n
Content-Transfer-Encoding: 8bit\n
Plural-Forms: nplurals=2; plural=n != 1;\n
{code}

2. Escape quotes

Some services can't deal with quotes in the translatable string:
{code}
msgid a href=#Accept using your data for research/a
{code}
One could argue that is this particular example the html should not be exposed 
to the translator but it's imaginable that quotes are uses in string that are 
presented to the user.

Escaping with a backslash allowed me to upload the .pot file: 
{code}
msgid a href=\#\Accept using your data for research/a
{code}
 
[1] http://pology.nedohodnik.net/doc/user/en_US/ch-poformat.html
[2] 
https://www.gnu.org/software/gettext/manual/html_node/Header-Entry.html#Header-Entry



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-1050) Reflection VFS related issues in jetty-console

2015-02-23 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-1050?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14333239#comment-14333239
 ] 

Jeroen van der Wal commented on ISIS-1050:
--

I'm not sure if the Jetty console has ever been free from these stacktraces, I 
only use it when testing a release. Anyway, the harmless nature doesn't justify 
cutting a release just for this.

 Reflection VFS related issues in jetty-console
 --

 Key: ISIS-1050
 URL: https://issues.apache.org/jira/browse/ISIS-1050
 Project: Isis
  Issue Type: Bug
  Components: Core
Affects Versions: core-1.8.0
Reporter: Martin Grigorov
Assignee: Dan Haywood
Priority: Minor

 Just tried java -jar .../simpleapp-...-jetty-console.jar and it logs several 
 VFS related stacktraces:
 java.io.FileNotFoundException: 
 /tmp/simpleapp-webapp-1.8.0-SNAPSHOT-jetty-console.jar_8080/webapp/WEB-INF/classes
  (Is a directory)
   at java.util.zip.ZipFile.open(Native Method)
   at java.util.zip.ZipFile.init(ZipFile.java:215)
   at java.util.zip.ZipFile.init(ZipFile.java:145)
   at java.util.jar.JarFile.init(JarFile.java:154)
   at java.util.jar.JarFile.init(JarFile.java:118)
   at org.reflections.vfs.Vfs$DefaultUrlTypes$1.createDir(Vfs.java:207)
   at org.reflections.vfs.Vfs.fromURL(Vfs.java:98)
   at org.reflections.vfs.Vfs.fromURL(Vfs.java:90)
   at org.reflections.Reflections.scan(Reflections.java:236)
   at org.reflections.Reflections.scan(Reflections.java:203)
   at org.reflections.Reflections.init(Reflections.java:128)
   at org.reflections.Reflections.init(Reflections.java:169)
   at 
 org.apache.isis.applib.services.classdiscovery.ClassDiscoveryServiceUsingReflections.findSubTypesOfClasses(ClassDiscoveryServiceUsingReflections.java:76)
   at 
 org.apache.isis.applib.fixturescripts.FixtureScripts.findSubTypesOfClasses(FixtureScripts.java:226)
 
 and
 ava.lang.NoClassDefFoundError: org/apache/commons/vfs2/VFS
   at org.reflections.vfs.Vfs$DefaultUrlTypes$7.matches(Vfs.java:281)
   at org.reflections.vfs.Vfs.fromURL(Vfs.java:97)
   at org.reflections.vfs.Vfs.fromURL(Vfs.java:90)
   at org.reflections.Reflections.scan(Reflections.java:236)
   at org.reflections.Reflections.scan(Reflections.java:203)
   at org.reflections.Reflections.init(Reflections.java:128)
   at org.reflections.Reflections.init(Reflections.java:169)
   at org.reflections.Reflections.init(Reflections.java:142)
   at 
 org.apache.isis.objectstore.jdo.service.RegisterEntities.registerAllPersistenceCapables(RegisterEntities.java:67)
 It seems they are harmless. The application seems to run fine.
 The problem could be related to the recent upgrade of Reflections to 0.9.9 
 and/or jetty-console-maven-plugin to 1.56.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (ISIS-1042) Dropdown of Enums does not honour title() method

2015-02-18 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-1042:


 Summary: Dropdown of Enums does not honour title() method
 Key: ISIS-1042
 URL: https://issues.apache.org/jira/browse/ISIS-1042
 Project: Isis
  Issue Type: Bug
  Components: Viewer: Wicket
Affects Versions: viewer-wicket-1.8.0
Reporter: Jeroen van der Wal
Assignee: Dan Haywood


The dropdown of enums shows the name of the enum, not the result of the title() 
method when available.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-1031) Filter and pagination on tables

2015-02-12 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-1031?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14318412#comment-14318412
 ] 

Jeroen van der Wal commented on ISIS-1031:
--

Pagination has always been available. It can be configured using the 
CollectionLayout#paged annotation [1]. The defaults can be set in the 
isis.properties file:
{code}
isis.viewers.paged.standalone=30
isis.viewers.paged.parented=10
{code}

[1] 
http://isis.apache.org/reference/recognized-annotations/CollectionLayout.html
 



 Filter and pagination on tables
 ---

 Key: ISIS-1031
 URL: https://issues.apache.org/jira/browse/ISIS-1031
 Project: Isis
  Issue Type: New Feature
  Components: Core
Affects Versions: viewer-wicket-1.7.0, core-1.7.0
Reporter: Joshua Kamau
Assignee: Martin Grigorov
Priority: Minor
  Labels: filter, grid, pagination

 It should be possible to show pagination in the tables possibly with 
 configurable page size. It should also be nice to have ability to filter 
 entities in a table.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (ISIS-1032) Contract test for bidirectional relationship can't handle overridden methods

2015-02-12 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-1032:


 Summary: Contract test for bidirectional relationship can't handle 
overridden methods
 Key: ISIS-1032
 URL: https://issues.apache.org/jira/browse/ISIS-1032
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: core-1.7.0
Reporter: Jeroen van der Wal
Assignee: Jeroen van der Wal
Priority: Minor
 Fix For: core-1.8.0


The contract tests search for methods with a specific name. It asserts to find 
one but when the method is overridden in a test it finds more then one.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-903) Improve i18n support (in NamedFacetDecorator etc) to honour client-side locale.

2015-02-02 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-903?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14301271#comment-14301271
 ] 

Jeroen van der Wal commented on ISIS-903:
-

The argument that Java developers are more familiar with resource bundles is 
true. However, I have not encountered a single developer yet who liked working 
with it. Especially the fact that they have to maintain two code artefacts in a 
non-typesafe manner is laborious and error prone.

My key principle is that a development team should *never* be bothered with the 
translation of an application. They develop in the language that is ubiquitous 
across the team, including the product owners. Translation is usually done 
separately by translators who don't even have to be on the team.

A usual workflow could be:
1. Development team creates application in their own language. Additionally, 
strings in code that end up in the UI are wrapped.
2. A maven command is used to extract all visibile text. From the metamodel it 
will take it's name (eg. New Todo), the @Named override when applicable and 
the @DescribedAs. From the source code it will parse the wrapped strings. The 
result is a single .pot file for the translatable items.
3. The .pot file is translated into a localised .po file. This can be done 
trough various tools, including online. The .po files are placed in the WEBINF 
folder so they can be maintained independent from the application release cycle.

Another big advantage I see in this approach is the fact that also includes 
Isis add-on modules will be included for translation without additional work. 
Except for wrapping strings in code of course.

Introducing label identifiers would devaluate the power of developing in Isis 
and is merely cutting corners. 

From a technical point both approaches are the same. The additional component 
in the GNU gettext approach is the the maven task to extract the metamodel 
items. Here we could extend Dan's work on the metamodel exporter.

 Improve i18n support (in NamedFacetDecorator etc) to honour client-side 
 locale.
 ---

 Key: ISIS-903
 URL: https://issues.apache.org/jira/browse/ISIS-903
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: core-1.6.0
Reporter: Dan Haywood
Assignee: Dan Haywood
Priority: Minor
 Fix For: core-1.9.0


 from the mailing list: http://markmail.org/message/wifsrte2p2q6tces
 ok, here's the scoop.
 It *is* possible to add i18n for Isis apps, but the implementation we have 
 reflects the locale of the server, rather than the client. 
 If client-side i18n is what you require then it ought to be possible to 
 implement a different implementation of I18nFacetDecoratorInstaller.  You can 
 get hold of the user's locale using:
 AuthenticatedWebSessionForIsis.get().getLocale()



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-1020) Dropdown window opens top left of the screen

2015-01-29 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-1020?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-1020:
-
Description: This is reporducable in IE11, I have created a screencast to 
demonstrate 
https://drive.google.com/file/d/0B2jd2Sl73mDBZ0lqYUhtVjVRamc/view?usp=sharing

 Dropdown window opens top left of the screen
 

 Key: ISIS-1020
 URL: https://issues.apache.org/jira/browse/ISIS-1020
 Project: Isis
  Issue Type: Bug
  Components: Viewer: Wicket
Reporter: Jeroen van der Wal
Assignee: Dan Haywood

 This is reporducable in IE11, I have created a screencast to demonstrate 
 https://drive.google.com/file/d/0B2jd2Sl73mDBZ0lqYUhtVjVRamc/view?usp=sharing



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-1020) Dropdown window opens top left of the screen

2015-01-29 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-1020?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-1020:
-
  Description: 
I have created a screencast to demonstrate in Estatio: 
https://drive.google.com/file/d/0B2jd2Sl73mDBZ0lqYUhtVjVRamc/view?usp=sharing

This is reproducible in both IE11 and Chrome.


  was:This is reporducable in IE11, I have created a screencast to demonstrate 
https://drive.google.com/file/d/0B2jd2Sl73mDBZ0lqYUhtVjVRamc/view?usp=sharing

Affects Version/s: viewer-wicket-1.8.0

 Dropdown window opens top left of the screen
 

 Key: ISIS-1020
 URL: https://issues.apache.org/jira/browse/ISIS-1020
 Project: Isis
  Issue Type: Bug
  Components: Viewer: Wicket
Affects Versions: viewer-wicket-1.8.0
Reporter: Jeroen van der Wal
Assignee: Dan Haywood

 I have created a screencast to demonstrate in Estatio: 
 https://drive.google.com/file/d/0B2jd2Sl73mDBZ0lqYUhtVjVRamc/view?usp=sharing
 This is reproducible in both IE11 and Chrome.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (ISIS-1020) Dropdown window opens top left of the screen

2015-01-29 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-1020:


 Summary: Dropdown window opens top left of the screen
 Key: ISIS-1020
 URL: https://issues.apache.org/jira/browse/ISIS-1020
 Project: Isis
  Issue Type: Bug
  Components: Viewer: Wicket
Reporter: Jeroen van der Wal
Assignee: Dan Haywood






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (ISIS-1014) Modal window improvements

2015-01-27 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-1014:


 Summary: Modal window improvements
 Key: ISIS-1014
 URL: https://issues.apache.org/jira/browse/ISIS-1014
 Project: Isis
  Issue Type: Improvement
  Components: Viewer: Wicket
Affects Versions: viewer-wicket-1.8.0
Reporter: Jeroen van der Wal
Assignee: Martin Grigorov
Priority: Minor
 Fix For: viewer-wicket-1.8.0


1. Currently the modal window is located at the top of the screen. We would 
prefer putting it in the center of the screen. The animation time can be 
eliminated or reduced and could come out of the center. 

2. We have a request that the user can move the modal window: she wants to be 
able to see underlying figures sometimes.

3. The user has to click twice on the OK button in order to invoke the modal 
window.

4. Make pressing the enter key invoke the OK action. 





--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-1012) Use the same date and time format across tables and fields

2015-01-22 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-1012?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-1012:
-
Attachment: screenshot-1.png

 Use the same date and time format across tables and fields
 --

 Key: ISIS-1012
 URL: https://issues.apache.org/jira/browse/ISIS-1012
 Project: Isis
  Issue Type: Improvement
  Components: Viewer: Wicket
Affects Versions: viewer-wicket-1.7.0
Reporter: Jeroen van der Wal
Assignee: Dan Haywood
 Attachments: screenshot-1.png






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (ISIS-1012) Use the same date and time format across tables and fields

2015-01-22 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-1012:


 Summary: Use the same date and time format across tables and fields
 Key: ISIS-1012
 URL: https://issues.apache.org/jira/browse/ISIS-1012
 Project: Isis
  Issue Type: Improvement
  Components: Viewer: Wicket
Affects Versions: viewer-wicket-1.7.0
Reporter: Jeroen van der Wal
Assignee: Dan Haywood
 Attachments: screenshot-1.png





--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-982) Change the name of the Apache Isis project into something else

2014-12-18 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-982?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-982:

Summary: Change the name of the Apache Isis project into something else  
(was: change the Name of the Project ISIS)

 Change the name of the Apache Isis project into something else
 

 Key: ISIS-982
 URL: https://issues.apache.org/jira/browse/ISIS-982
 Project: Isis
  Issue Type: Wish
Reporter: Sushil Kumar Saini
Assignee: Dan Haywood

 This name coincides with terrorist organisation. Its name can attract 
 unwilling attention . Request you to rename the project.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-970) Introduce new annotations to collect together all non-UI (layout) hints, and deprecate old annotations

2014-12-10 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-970?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14241869#comment-14241869
 ] 

Jeroen van der Wal commented on ISIS-970:
-

Good stuff, this will make it much easier for newcomers. Personally the 
remaining annotations could be removed for now and reinstated if they fit a 
purpose in Isis again. One little thing: the objectType on @DomainObject 
actually is the objectName.

 Introduce new annotations to collect together all non-UI (layout) hints, and 
 deprecate old annotations
 --

 Key: ISIS-970
 URL: https://issues.apache.org/jira/browse/ISIS-970
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: core-1.7.0
Reporter: Dan Haywood
Assignee: Dan Haywood
 Fix For: core-1.8.0


 specifically:
 {code}
 @DomainObject(
 audited = true|false
 auditedDisabled = true|false // representing 
 @Audited(disabled=true)
 published= SomePayloadFactory.class  // probably factor out 
 PayloadFactory.Default so similar to interaction
 autoComplete = SomeRepository.class
 bookmarkable = BookmarkPolicy.ROOT   // or CHILD
 bounded  = true|false// do not combine with 
 autoComplete
 immutable= When.ALWAYS   // or perhaps true|false; 
 defaults to ?  perhaps true ?
 objectType   = CUS
 viewModel= true|false// defaults to false
 )
 {code}
 and
 {code}
 @Property(
 interaction= ToDoItem.DueBy.class   // or 
 PropertyInteractionEvent.Default.class for default
 disabled   = Where.OBJECT_FORMS etc.   // (ignore the When enum)
 disabledReason = ... // optional, representing 
 @Disabled(reason=...)
 maxLength= 20
 mustSatisfy  = {SomeSpecification.class}
 notPersisted = true|false  // defaults to false
 optional = true|false  // defaults to false (ie 
 mandatory)
 regex= abc.*def  // ignore the validation and 
 caseSensitive attributes
 )
 {code}
 and
 {code}
 @Collection(
 interaction=
 disabled   = Where.OBJECT_FORMS etc.   // (ignore the When enum)
 disabledReason = ... // optional, representing 
 @Disabled(reason=...)
 typeOf== OrderLine.class
 )
 {code}
 and
 {code}
 @Action(
 interaction= ToDoItem.Completed.class  // or 
 ActionInteractionEvent.Default.class for default
 disabled   = Where.OBJECT_FORMS etc.   // (ignore the When enum)
 disabledReason = ... // optional, representing 
 @Disabled(reason=...)
 semantics  = Of.SAFE   // or IDEMPOTENT, 
 NON_IDEMPOTENT  
 bulk   = AppliesTo.BULK_ONLY   // or BULK_AND_REGULAR
 command= true|false
 commandPersistence = Persistence.PERSISTED // representing 
 @Command(persistence=...)
 commandExecuteIn   = ExecuteIn.FOREGROUND  // representing 
 @Command(executeIn=...)
 commandDisabled= true|false// representing 
 @Command(disabled=true)
 published  = SomePayloadFactory.class  // probably factor out 
 PayloadFactory.Default so similar to interaction
 )
 {code}
 and
 {code}
 @Parameter(
 minLength   = 3
 mustSatisfy = {SomeSpecification.class}
 optional= true|false  // defaults to false (ie 
 mandatory)
 regex   = abc.*def  // ignore the validation and 
 caseSensitive attributes
 )
 {code}
 This would result in the full complement of Isis annotations being:
 - @DomainService  and @DomainServiceLayout
 - @DomainObject  and @DomainObjectLayout
 - @Property   and @PropertyLayout
 - @Collection and @CollectionLayout
 - @Action and @ActionLayout
 - @Parameter and @ParameterLayout
 Also two further additional UI hints:
 - @Title
 - @MemberGroupLayout
 All the above @XxxLayout annotations can instead be specified using a 
 .layout.json file.
 The following 3rd-party annotations also supported:
 - @javax.validation.constraints.Digits
 - @javax.enterprise.context.RequestScoped
 - @javax.jdo.annotations.*
 ~~~
 Need to decide what to do with remaining annotations (mostly pertaining to 
 value types and other DDD ideas); remove or keep?  They are:
 - @Value
 - @Defaulted
 - @Encodeable
 - @EqualByContent
 - @Parseable
 - @Aggregated
 - @NotPersistable
 - @Facets



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (ISIS-960) The event bus swallows errors thrown in the subscribers

2014-11-27 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-960:
---

 Summary: The event bus swallows errors thrown in the subscribers
 Key: ISIS-960
 URL: https://issues.apache.org/jira/browse/ISIS-960
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: core-1.7.0
Reporter: Jeroen van der Wal
Assignee: Jeroen van der Wal
 Fix For: core-1.8.0


The event bus swallows errors thrown in the subscribers so it's returning false 
positives on validate and other phases.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Closed] (ISIS-960) The event bus swallows errors thrown in the subscribers

2014-11-27 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-960?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal closed ISIS-960.
---
Resolution: Fixed

 The event bus swallows errors thrown in the subscribers
 ---

 Key: ISIS-960
 URL: https://issues.apache.org/jira/browse/ISIS-960
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: core-1.7.0
Reporter: Jeroen van der Wal
Assignee: Jeroen van der Wal
 Fix For: core-1.8.0


 The event bus swallows errors thrown in the subscribers so it's returning 
 false positives on validate and other phases.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-784) Change Wicket viewer to get rid of edit mode, instead allow individual fields to be edited by clicking on them (similar to the way that JIRA works).

2014-11-25 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-784?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14225245#comment-14225245
 ] 

Jeroen van der Wal commented on ISIS-784:
-

I think that looks nice. We could make the changeXXX method be associated with 
an getXXX if available. Something like this:

public class Something {
private String street;
private String city;
... setters + getters ...

public String getAddress() {
return getStreet() + ,   + getCity();
}
public void changeAddress() { final String street, final String city) {
setStreet(street);
setCity(city);
}
}

Currently this shows a modal window which is fine for now. Perhaps for Isis 
3.0? ;-)













 Change Wicket viewer to get rid of edit mode, instead allow individual fields 
 to be edited by clicking on them (similar to the way that JIRA works).
 

 Key: ISIS-784
 URL: https://issues.apache.org/jira/browse/ISIS-784
 Project: Isis
  Issue Type: New Feature
  Components: Viewer: Wicket
Affects Versions: viewer-wicket-1.4.1
Reporter: Dan Haywood
Assignee: Dan Haywood
Priority: Minor
 Fix For: viewer-wicket-2.0.0






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-439) Wicket viewer should support mutable collections - ie with an implicit 'add' and 'remove' action.

2014-11-25 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-439?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14225261#comment-14225261
 ] 

Jeroen van der Wal commented on ISIS-439:
-

Agree that it's better to remove mutable collections from the programming model 
since it's not compatible with decoupling using contributed collections.

 Wicket viewer should support mutable collections - ie with an implicit 'add' 
 and 'remove' action.
 -

 Key: ISIS-439
 URL: https://issues.apache.org/jira/browse/ISIS-439
 Project: Isis
  Issue Type: Improvement
  Components: Viewer: Wicket
Affects Versions: viewer-wicket-1.2.0
Reporter: Dan Haywood
Assignee: Dan Haywood
 Fix For: viewer-wicket-2.0.0






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (ISIS-946) Isis application won't run from Eclipse

2014-11-11 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-946:
---

 Summary: Isis application won't run from Eclipse
 Key: ISIS-946
 URL: https://issues.apache.org/jira/browse/ISIS-946
 Project: Isis
  Issue Type: Bug
  Components: Viewer: Wicket
Affects Versions: viewer-wicket-1.8.0
Reporter: Jeroen van der Wal
Assignee: Dan Haywood
Priority: Critical


{code}
java.lang.Error: Unresolved compilation problem: 
The type javax.servlet.http.Cookie cannot be resolved. It is indirectly 
referenced from required .class files

at 
org.apache.isis.viewer.wicket.ui.components.widgets.themepicker.ThemeChooser.init(ThemeChooser.java:96)
at 
org.apache.isis.viewer.wicket.ui.pages.PageAbstract.addThemePicker(PageAbstract.java:211)
at 
org.apache.isis.viewer.wicket.ui.pages.PageAbstract.init(PageAbstract.java:180)
at 
org.apache.isis.viewer.wicket.ui.pages.error.ErrorPage.init(ErrorPage.java:40)
at 
org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis.errorPageFor(WebRequestCycleForIsis.java:177)
at 
org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis.errorPageProviderFor(WebRequestCycleForIsis.java:147)
at 
org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis.onException(WebRequestCycleForIsis.java:138)
at 
org.apache.wicket.request.cycle.RequestCycleListenerCollection$4.notify(RequestCycleListenerCollection.java:126)
at 
org.apache.wicket.request.cycle.RequestCycleListenerCollection$4.notify(RequestCycleListenerCollection.java:122)
at 
org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection.java:80)
at 
org.apache.wicket.request.cycle.RequestCycleListenerCollection.onException(RequestCycleListenerCollection.java:121)
at 
org.apache.wicket.request.cycle.RequestCycleListenerCollection$4.notify(RequestCycleListenerCollection.java:126)
at 
org.apache.wicket.request.cycle.RequestCycleListenerCollection$4.notify(RequestCycleListenerCollection.java:122)
at 
org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection.java:80)
at 
org.apache.wicket.request.cycle.RequestCycleListenerCollection.onException(RequestCycleListenerCollection.java:121)
at 
org.apache.wicket.request.cycle.RequestCycle.handleException(RequestCycle.java:347){code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-946) Isis application won't run from Eclipse

2014-11-11 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-946?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14206340#comment-14206340
 ] 

Jeroen van der Wal commented on ISIS-946:
-

That fixed it. Thanks Martin!

 Isis application won't run from Eclipse
 ---

 Key: ISIS-946
 URL: https://issues.apache.org/jira/browse/ISIS-946
 Project: Isis
  Issue Type: Bug
  Components: Viewer: Wicket
Affects Versions: viewer-wicket-1.8.0
Reporter: Jeroen van der Wal
Assignee: Martin Grigorov
Priority: Critical

 {code}
 java.lang.Error: Unresolved compilation problem: 
   The type javax.servlet.http.Cookie cannot be resolved. It is indirectly 
 referenced from required .class files
   at 
 org.apache.isis.viewer.wicket.ui.components.widgets.themepicker.ThemeChooser.init(ThemeChooser.java:96)
   at 
 org.apache.isis.viewer.wicket.ui.pages.PageAbstract.addThemePicker(PageAbstract.java:211)
   at 
 org.apache.isis.viewer.wicket.ui.pages.PageAbstract.init(PageAbstract.java:180)
   at 
 org.apache.isis.viewer.wicket.ui.pages.error.ErrorPage.init(ErrorPage.java:40)
   at 
 org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis.errorPageFor(WebRequestCycleForIsis.java:177)
   at 
 org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis.errorPageProviderFor(WebRequestCycleForIsis.java:147)
   at 
 org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis.onException(WebRequestCycleForIsis.java:138)
   at 
 org.apache.wicket.request.cycle.RequestCycleListenerCollection$4.notify(RequestCycleListenerCollection.java:126)
   at 
 org.apache.wicket.request.cycle.RequestCycleListenerCollection$4.notify(RequestCycleListenerCollection.java:122)
   at 
 org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection.java:80)
   at 
 org.apache.wicket.request.cycle.RequestCycleListenerCollection.onException(RequestCycleListenerCollection.java:121)
   at 
 org.apache.wicket.request.cycle.RequestCycleListenerCollection$4.notify(RequestCycleListenerCollection.java:126)
   at 
 org.apache.wicket.request.cycle.RequestCycleListenerCollection$4.notify(RequestCycleListenerCollection.java:122)
   at 
 org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection.java:80)
   at 
 org.apache.wicket.request.cycle.RequestCycleListenerCollection.onException(RequestCycleListenerCollection.java:121)
   at 
 org.apache.wicket.request.cycle.RequestCycle.handleException(RequestCycle.java:347){code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (ISIS-912) Not possible to specify the fixtures to be loaded from the command line (ie --fixture flag is broken).

2014-10-02 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-912:
---

 Summary: Not possible to specify the fixtures to be loaded from 
the command line (ie --fixture flag is broken).
 Key: ISIS-912
 URL: https://issues.apache.org/jira/browse/ISIS-912
 Project: Isis
  Issue Type: Bug
  Components: Core
Affects Versions: core-1.6.0
Reporter: Jeroen van der Wal
Assignee: Jeroen van der Wal
Priority: Minor
 Fix For: core-1.7.0


In addition, need better documentation so that can see that it's also necessary 
to enable fixtures to be loaded using an additional system property 
isis.persistor.datanucleus.install-fixtures.

eg:

-D isis.persistor.datanucleus.install-fixtures=true \ 
--fixture org.estatio.fixture.EstatioDemoFixture  \
--type PROTOTYPE \
--port 8080




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-899) Can't return a view model in Isis 1.6.0 over RO viewer.

2014-09-28 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-899?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14151022#comment-14151022
 ] 

Jeroen van der Wal commented on ISIS-899:
-

Hi Vladimir,

I don't see any call to the mementoservice to generate a string respresentation 
of the state of the objects, in Isis 1.6 you have to generate that first before 
instantiating the viewmodel.

In Isis 1.7.0-SNAPSHOT you just have to annotate the pojo with @ViewModel and 
the memento will be generated behind the curtains based on the setters:
{code}
@ViewModel
public class Address {

public String title() {
return Address lkmsId: + lkmsId;
}

private Street street;

@MemberOrder(sequence = 3)
public Street getStreet() {
return street;
}

public void setStreet(final Street street) {
this.street = street;
}
...
}
{code}

{code}
@ViewModel
public class Street {

}
{code}

{code}
public class AsePublicService {
@Render(Type.EAGERLY)
public Address getAddress(@Named(Source System) final String 
sourceSystem, @Named(User) final String user, @Named(Agent) final String 
agent, @Named(LKMS-ID) final String lkmsId, @Named(Valid Location) final 
boolean validLocation) {
final Address address = new Address();
address.setHousenumber(12);
Street street = new Street();
street.setStreetname(5th Avenue);
address.setStreet(street);
return address;
   }
   ...
{code}

The isPersistent=true looks like a bug.

 Can't return a view model in Isis 1.6.0 over RO viewer.
 ---

 Key: ISIS-899
 URL: https://issues.apache.org/jira/browse/ISIS-899
 Project: Isis
  Issue Type: Bug
  Components: Core: Viewer: RestfulObjects
Affects Versions: core-1.6.0
Reporter: Dan Haywood
Assignee: Dan Haywood
 Fix For: core-1.7.0

 Attachments: Address.java, AsePublicService.java, Street.java, 
 Wicket.png






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (ISIS-905) Transaction handling fix, if throw exception on flush for no-arg action.

2014-09-26 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-905:
---

 Summary: Transaction handling fix, if throw exception on flush for 
no-arg action.
 Key: ISIS-905
 URL: https://issues.apache.org/jira/browse/ISIS-905
 Project: Isis
  Issue Type: Bug
  Components: Core
Affects Versions: core-1.6.0
Reporter: Jeroen van der Wal
Assignee: Dan Haywood
Priority: Minor
 Fix For: core-1.7.0






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (ISIS-906) incorrectly attempts to render a veto exception (from a subscriber) to a non-existent action dialog panel when invoked for a no-arg action.

2014-09-26 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-906:
---

 Summary: incorrectly attempts to render a veto exception (from a 
subscriber) to a non-existent action dialog panel when invoked for a no-arg 
action.
 Key: ISIS-906
 URL: https://issues.apache.org/jira/browse/ISIS-906
 Project: Isis
  Issue Type: Bug
  Components: Viewer: Wicket
Affects Versions: viewer-wicket-1.6.0
Reporter: Jeroen van der Wal
Assignee: Dan Haywood
Priority: Minor
 Fix For: viewer-wicket-1.8.0


eg, with this code, the remove fails though the removeAndReplace works fine:

{code}
@ActionInteraction(Party.RemoveEvent.class)
public void remove() {
removeAndReplace(null);
}

@ActionInteraction(Party.RemoveEvent.class)
public void removeAndReplace(@Named(Replace with) @Optional Party 
replacement) {
getContainer().remove(this);
getContainer().flush();
}
{code}

and the following stacktrace:

{code}
13:24:48,119 [MarkupContainer   ] Unable to find component with id 
'actionName' in [ActionPanel [Component id = content]]
Expected: 'theme:actionPromptModalWindow:content:actionName'.
Found with similar names: ''
13:24:48,119 [RequestCycleExtra ] 
13:24:48,120 [RequestCycleExtra ] Handling the following exception
Unable to find component with id 'actionName' in [ActionPanel [Component id = 
content]]
Expected: 'theme:actionPromptModalWindow:content:actionName'.
Found with similar names: ''
 MarkupStream: [markup = 
file:/C:/Users/jvanderwal/src/isis/component/viewer/wicket/ui/target-ide/classes/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.html
wicket:panel
div class=actionPanel actionComponentType
div class=myBlockContainer
div class=iconAndTitle panel 
actionPanelHeaderNew
 span wicket:id=entityIconAndTitle[icon and 
title]/span
 p wicket:id=actionName 
class=actionName[action name]/p
/div
span wicket:id=parameters
/span
/div
/div
/wicket:panel, index = 6, current =  'p 
wicket:id=actionName class=actionName' (line 0, column 0)]
at 
org.apache.wicket.markup.MarkupStream.throwMarkupException(MarkupStream.java:526)
at 
org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1438)
at 
org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1557)
at 
org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1532)
at 
org.apache.wicket.MarkupContainer.renderAssociatedMarkup(MarkupContainer.java:689)
at 
org.apache.wicket.markup.html.panel.AssociatedMarkupSourcingStrategy.renderAssociatedMarkup(AssociatedMarkupSourcingStrategy.java:76)
at 
org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy.onComponentTagBody(PanelMarkupSourcingStrategy.java:112)
at 
org.apache.wicket.Component.internalRenderComponent(Component.java:2514)
at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1496)
at org.apache.wicket.Component.internalRender(Component.java:2344)
at org.apache.wicket.Component.render(Component.java:2272)
at 
org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1392)
at 
org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1557)
at 
org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1532)
at 
org.apache.wicket.MarkupContainer.renderAssociatedMarkup(MarkupContainer.java:689)
at 
org.apache.wicket.markup.html.panel.AssociatedMarkupSourcingStrategy.renderAssociatedMarkup(AssociatedMarkupSourcingStrategy.java:76)
at 
org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy.onComponentTagBody(PanelMarkupSourcingStrategy.java:112)
at 
org.apache.wicket.Component.internalRenderComponent(Component.java:2514)
at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1496)
at org.apache.wicket.Component.internalRender(Component.java:2344)
at org.apache.wicket.Component.render(Component.java:2272)
at 
org.apache.wicket.ajax.XmlAjaxResponse.writeComponent(XmlAjaxResponse.java:128)
at 
org.apache.wicket.ajax.AbstractAjaxResponse.writeComponents(AbstractAjaxResponse.java:218)
at 
org.apache.wicket.ajax.AbstractAjaxResponse.writeTo(AbstractAjaxResponse.java:150)
at 
org.apache.wicket.ajax.AjaxRequestHandler.respond(AjaxRequestHandler.java:359)
at 
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:862)
at 

[jira] [Updated] (ISIS-890) Get rid of exploration mode, treat as synonym for prototype. Ditto with @Exploration annotation.

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-890?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-890:

Fix Version/s: (was: core-1.7.0)
   core-2.0.0

 Get rid of exploration mode, treat as synonym for prototype.  Ditto with 
 @Exploration annotation.
 -

 Key: ISIS-890
 URL: https://issues.apache.org/jira/browse/ISIS-890
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: core-1.6.0
Reporter: Dan Haywood
Assignee: Dan Haywood
 Fix For: core-2.0.0


 The main rationale here is to simplify and reduce number of concepts for 
 developer to grapple with.
 Another part of the rationale is to make Isis consistent with Wicket, that 
 only has two modes, not three (DEVELOPMENT and DEPLOYMENT).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (ISIS-901) Use @DomainService(repositoryFor=...) as the basis for an implementation of the IconFacet.

2014-09-26 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-901?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14149064#comment-14149064
 ] 

Jeroen van der Wal commented on ISIS-901:
-

and similarly, this might be a replacement to using @AutoComplete annotation so 
that we can detect which service to use automatically.

And, similarly, could use for the implementation of the PluralNameFacet, using 
the name of the repo as the basis.  (Party = Parties etc).

 Use @DomainService(repositoryFor=...) as the basis for an implementation of 
 the IconFacet.
 --

 Key: ISIS-901
 URL: https://issues.apache.org/jira/browse/ISIS-901
 Project: Isis
  Issue Type: New Feature
  Components: Core
Affects Versions: core-1.6.0
Reporter: Dan Haywood
Assignee: Dan Haywood
Priority: Minor
 Fix For: core-1.8.0


 ... thus meaning no requirement to write an iconName method in the domain 
 service.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-901) Use @DomainService(repositoryFor=...) as the basis for an implementation of the IconFacet.

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-901?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-901:

Fix Version/s: (was: core-1.7.0)
   core-1.8.0

 Use @DomainService(repositoryFor=...) as the basis for an implementation of 
 the IconFacet.
 --

 Key: ISIS-901
 URL: https://issues.apache.org/jira/browse/ISIS-901
 Project: Isis
  Issue Type: New Feature
  Components: Core
Affects Versions: core-1.6.0
Reporter: Dan Haywood
Assignee: Dan Haywood
Priority: Minor
 Fix For: core-1.8.0


 ... thus meaning no requirement to write an iconName method in the domain 
 service.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-893) (Cosmetics): If attempt to invoke non-existent action, get nasty error message

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-893?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-893:

Fix Version/s: (was: viewer-wicket-1.7.0)
   (was: core-1.7.0)
   core-1.8.0
   viewer-wicket-1.8.0

 (Cosmetics): If attempt to invoke non-existent action, get nasty error message
 --

 Key: ISIS-893
 URL: https://issues.apache.org/jira/browse/ISIS-893
 Project: Isis
  Issue Type: Improvement
  Components: Core, Viewer: Wicket
Affects Versions: viewer-wicket-1.6.0, core-1.6.0
Reporter: Dan Haywood
Assignee: Dan Haywood
Priority: Minor
 Fix For: viewer-wicket-1.8.0, core-1.8.0


 see the actionId=fooBar
 diverted to error page with following stack trace:
 15:59:41,112  [RequestCycleExtra577739874@qtp-1148559558-0 WARN ]  
 Handling the following exception
 org.apache.wicket.WicketRuntimeException: Can't instantiate page using 
 constructor 'public 
 org.apache.isis.viewer.wicket.ui.pages.actionprompt.ActionPromptPage(org.apache.wicket.request.mapper.parameter.PageParameters)'
  and argument 'actionArgs=[abc], actionArgs=[Professional], 
 actionArgs=[$nullArg$], actionArgs=[20140925], actionArgs=[$nullArg$], 
 objectOid=[dom.todo.ToDoItems:1], actionOwningSpec=[dom.todo.ToDoItems], 
 actionId=[fooBar(java.lang.String,dom.todo.ToDoItem$Category,dom.todo.ToDoItem$Subcategory,org.joda.time.LocalDate,java.math.BigDecimal)],
  actionType=[USER]'. An exception has been thrown during construction!
   at 
 org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:194)
   at 
 org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:99)
   at 
 org.apache.wicket.DefaultMapperContext.newPageInstance(DefaultMapperContext.java:137)
   at 
 org.apache.wicket.core.request.handler.PageProvider.resolvePageInstance(PageProvider.java:268)
   at 
 org.apache.wicket.core.request.handler.PageProvider.getPageInstance(PageProvider.java:166)
   at 
 org.apache.wicket.request.handler.render.PageRenderer.getPage(PageRenderer.java:78)
   at 
 org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:100)
   at 
 org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:221)
   at 
 org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:175)
   at 
 org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:862)
   at 
 org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
   at 
 org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261)
   at 
 org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218)
   at 
 org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289)
   at 
 org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
   at 
 org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
   at 
 org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
   at 
 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
   at 
 org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter.doFilter(IsisLogOnExceptionFilter.java:52)
   at 
 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
   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.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
   at 
 org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
   at 
 org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
   at 
 org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
   at 
 org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
   at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
   

[jira] [Commented] (ISIS-886) Provide an API (perhaps in the WrapperFactory)to allow a programmer to determine whether the current user has view and/or modify access to a feature.

2014-09-26 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-886?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14149065#comment-14149065
 ] 

Jeroen van der Wal commented on ISIS-886:
-

Might be that this is not needed, could simply wrap the call to the sensitive 
info:
{code}
public String title() {
StringBuilder buf = new StringBuilder();
try {
buf.append(wrap(this).getFirstName());
} catch(HiddenException ex) {
// ignore
}
{code}


 Provide an API (perhaps in the WrapperFactory)to allow a programmer to 
 determine whether the current user has view and/or modify access to a feature.
 -

 Key: ISIS-886
 URL: https://issues.apache.org/jira/browse/ISIS-886
 Project: Isis
  Issue Type: New Feature
  Components: Core
Affects Versions: core-1.6.0
Reporter: Dan Haywood
Assignee: Dan Haywood
Priority: Minor
 Fix For: core-1.7.0


 The main use case being to allow a suitable title to be rendered (in title()) 
 based on the users' permissions, eg:
 public String title() {
 StringBuilder buf = new StringBuilder();
 if(wrapperFactory.isHidden(this, firstName)) {
buf.append(this.getFirstName());
 }
return buf.toString();
 }
 and isDisabled(...) similarly



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (ISIS-886) Provide an API (perhaps in the WrapperFactory)to allow a programmer to determine whether the current user has view and/or modify access to a feature.

2014-09-26 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-886?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14149065#comment-14149065
 ] 

Jeroen van der Wal edited comment on ISIS-886 at 9/26/14 11:52 AM:
---

Might be that this is not needed, could simply wrap the call to the sensitive 
info:
{code}
public String title() {
StringBuilder buf = new StringBuilder();
try {
buf.append(wrap(this).getFirstName());
} catch(HiddenException ex) {
// ignore
}
{code}

... in which case this can just be a documentation ticket.


was (Author: jcvanderwal):
Might be that this is not needed, could simply wrap the call to the sensitive 
info:
{code}
public String title() {
StringBuilder buf = new StringBuilder();
try {
buf.append(wrap(this).getFirstName());
} catch(HiddenException ex) {
// ignore
}
{code}


 Provide an API (perhaps in the WrapperFactory)to allow a programmer to 
 determine whether the current user has view and/or modify access to a feature.
 -

 Key: ISIS-886
 URL: https://issues.apache.org/jira/browse/ISIS-886
 Project: Isis
  Issue Type: New Feature
  Components: Core
Affects Versions: core-1.6.0
Reporter: Dan Haywood
Assignee: Dan Haywood
Priority: Minor
 Fix For: core-1.7.0


 The main use case being to allow a suitable title to be rendered (in title()) 
 based on the users' permissions, eg:
 {code}
 public String title() {
 StringBuilder buf = new StringBuilder();
 if(wrapperFactory.isHidden(this, firstName)) {
buf.append(this.getFirstName());
 }
return buf.toString();
 }
 {code}
 and isDisabled(...) similarly



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-886) Provide an API (perhaps in the WrapperFactory)to allow a programmer to determine whether the current user has view and/or modify access to a feature.

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-886?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-886:

Description: 
The main use case being to allow a suitable title to be rendered (in title()) 
based on the users' permissions, eg:

{code}
public String title() {
StringBuilder buf = new StringBuilder();
if(wrapperFactory.isHidden(this, firstName)) {
   buf.append(this.getFirstName());
}
   return buf.toString();
}
{code}

and isDisabled(...) similarly


  was:
The main use case being to allow a suitable title to be rendered (in title()) 
based on the users' permissions, eg:

public String title() {
StringBuilder buf = new StringBuilder();
if(wrapperFactory.isHidden(this, firstName)) {
   buf.append(this.getFirstName());
}
   return buf.toString();
}

and isDisabled(...) similarly



 Provide an API (perhaps in the WrapperFactory)to allow a programmer to 
 determine whether the current user has view and/or modify access to a feature.
 -

 Key: ISIS-886
 URL: https://issues.apache.org/jira/browse/ISIS-886
 Project: Isis
  Issue Type: New Feature
  Components: Core
Affects Versions: core-1.6.0
Reporter: Dan Haywood
Assignee: Dan Haywood
Priority: Minor
 Fix For: core-1.7.0


 The main use case being to allow a suitable title to be rendered (in title()) 
 based on the users' permissions, eg:
 {code}
 public String title() {
 StringBuilder buf = new StringBuilder();
 if(wrapperFactory.isHidden(this, firstName)) {
buf.append(this.getFirstName());
 }
return buf.toString();
 }
 {code}
 and isDisabled(...) similarly



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-855) Allow contributed actions to be renamed in the contributee

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-855:

Fix Version/s: (was: core-1.7.0)
   core-1.8.0

 Allow contributed actions to be renamed in the contributee
 --

 Key: ISIS-855
 URL: https://issues.apache.org/jira/browse/ISIS-855
 Project: Isis
  Issue Type: New Feature
  Components: Core
Affects Versions: core-1.6.0
Reporter: Dan Haywood
Assignee: Dan Haywood
Priority: Minor
 Fix For: core-1.8.0


 eg 
 for Lease#calculate(Property) - to appear as - Property#calculateLeases



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (ISIS-886) Provide an API (perhaps in the WrapperFactory)to allow a programmer to determine whether the current user has view and/or modify access to a feature.

2014-09-26 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-886?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14149065#comment-14149065
 ] 

Jeroen van der Wal edited comment on ISIS-886 at 9/26/14 11:53 AM:
---

Might be that this is not needed, could simply wrap the call to the sensitive 
info:
{code}
public String title() {
StringBuilder buf = new StringBuilder();
try {
buf.append(wrap(this).getFirstName());
} catch(HiddenException ex) {
// ignore
}
}
{code}

... in which case this can just be a documentation ticket.


was (Author: jcvanderwal):
Might be that this is not needed, could simply wrap the call to the sensitive 
info:
{code}
public String title() {
StringBuilder buf = new StringBuilder();
try {
buf.append(wrap(this).getFirstName());
} catch(HiddenException ex) {
// ignore
}
{code}

... in which case this can just be a documentation ticket.

 Provide an API (perhaps in the WrapperFactory)to allow a programmer to 
 determine whether the current user has view and/or modify access to a feature.
 -

 Key: ISIS-886
 URL: https://issues.apache.org/jira/browse/ISIS-886
 Project: Isis
  Issue Type: New Feature
  Components: Core
Affects Versions: core-1.6.0
Reporter: Dan Haywood
Assignee: Dan Haywood
Priority: Minor
 Fix For: core-1.7.0


 The main use case being to allow a suitable title to be rendered (in title()) 
 based on the users' permissions, eg:
 {code}
 public String title() {
 StringBuilder buf = new StringBuilder();
 if(wrapperFactory.isHidden(this, firstName)) {
buf.append(this.getFirstName());
 }
return buf.toString();
 }
 {code}
 and isDisabled(...) similarly



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-845) Hidden (Where.REFERENCES_PARENT) should take into account the instance that is the parent, not just its type.

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-845?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-845:

Description: 
For example:

PartyRelationship {
fromParty;
toParty;
}

if rendered from the point of view of the from party, would want to show only 
the toParty.  But adding this annotation causes both properties to be 
suppressed.

This can be seen in the code:

{code}
static FilterObjectAssociation associationDoesNotReferenceParent(final 
ObjectSpecification parentSpec) {
if(parentSpec == null) {
return Filters.any();
}
return new FilterObjectAssociation() {
@Override
public boolean accept(ObjectAssociation association) {
final HiddenFacet facet = 
association.getFacet(HiddenFacet.class);
if(facet == null) {
return true;
}
if (facet.where() != Where.REFERENCES_PARENT) {
return true;
}
final ObjectSpecification assocSpec = 
association.getSpecification();
final boolean associationSpecIsOfParentSpec = 
parentSpec.isOfType(assocSpec);
final boolean isVisible = !associationSpecIsOfParentSpec;
return isVisible;
}
};
}
{code}

Instead, the code should take into account the actual instance that is 
referenced, not just the type (ie look at the object that the association 
points back to).

  was:
For example:

PartyRelationship {
fromParty;
toParty;
}

if rendered from the point of view of the from party, would want to show only 
the toParty.  But adding this annotation causes both properties to be 
suppressed.

This can be seen in the code:

static FilterObjectAssociation associationDoesNotReferenceParent(final 
ObjectSpecification parentSpec) {
if(parentSpec == null) {
return Filters.any();
}
return new FilterObjectAssociation() {
@Override
public boolean accept(ObjectAssociation association) {
final HiddenFacet facet = 
association.getFacet(HiddenFacet.class);
if(facet == null) {
return true;
}
if (facet.where() != Where.REFERENCES_PARENT) {
return true;
}
final ObjectSpecification assocSpec = 
association.getSpecification();
final boolean associationSpecIsOfParentSpec = 
parentSpec.isOfType(assocSpec);
final boolean isVisible = !associationSpecIsOfParentSpec;
return isVisible;
}
};
}

Instead, the code should take into account the actual instance that is 
referenced, not just the type (ie look at the object that the association 
points back to).


 Hidden (Where.REFERENCES_PARENT) should take into account the instance that 
 is the parent, not just its type.
 -

 Key: ISIS-845
 URL: https://issues.apache.org/jira/browse/ISIS-845
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: core-1.6.0
Reporter: Dan Haywood
Assignee: Dan Haywood
 Fix For: core-1.8.0


 For example:
 PartyRelationship {
 fromParty;
 toParty;
 }
 if rendered from the point of view of the from party, would want to show only 
 the toParty.  But adding this annotation causes both properties to be 
 suppressed.
 This can be seen in the code:
 {code}
 static FilterObjectAssociation associationDoesNotReferenceParent(final 
 ObjectSpecification parentSpec) {
 if(parentSpec == null) {
 return Filters.any();
 }
 return new FilterObjectAssociation() {
 @Override
 public boolean accept(ObjectAssociation association) {
 final HiddenFacet facet = 
 association.getFacet(HiddenFacet.class);
 if(facet == null) {
 return true;
 }
 if (facet.where() != Where.REFERENCES_PARENT) {
 return true;
 }
 final ObjectSpecification assocSpec = 
 association.getSpecification();
 final boolean associationSpecIsOfParentSpec = 
 parentSpec.isOfType(assocSpec);
 final boolean isVisible = !associationSpecIsOfParentSpec;
 return isVisible;
 }
 };
 }
 {code}
 Instead, the code should take into account the actual instance that is 
 referenced, not just the type (ie look at the object that the association 
 points back to).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-834) Ensure that only a single implementation of a DomainService is registered.

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-834?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-834:

Fix Version/s: (was: core-1.7.0)
   core-2.0.0

 Ensure that only a single implementation of a DomainService is registered.
 --

 Key: ISIS-834
 URL: https://issues.apache.org/jira/browse/ISIS-834
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: core-1.5.0
Reporter: Dan Haywood
Assignee: Dan Haywood
Priority: Minor
 Fix For: core-2.0.0


 Two complications:
 - ExceptionRecognizers require multiple implementations (are chained together)
 - for each implementation we identify all the types it implements, so the 
 check isn't a simple 1:1 map (at the limit all implementations extend 
 java.lang.Object).  Therefore need to take into account the set of injection 
 points that the services are injected into.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-845) Hidden (Where.REFERENCES_PARENT) should take into account the instance that is the parent, not just its type.

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-845?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-845:

Fix Version/s: (was: core-1.7.0)
   core-1.8.0

 Hidden (Where.REFERENCES_PARENT) should take into account the instance that 
 is the parent, not just its type.
 -

 Key: ISIS-845
 URL: https://issues.apache.org/jira/browse/ISIS-845
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: core-1.6.0
Reporter: Dan Haywood
Assignee: Dan Haywood
 Fix For: core-1.8.0


 For example:
 PartyRelationship {
 fromParty;
 toParty;
 }
 if rendered from the point of view of the from party, would want to show only 
 the toParty.  But adding this annotation causes both properties to be 
 suppressed.
 This can be seen in the code:
 static FilterObjectAssociation associationDoesNotReferenceParent(final 
 ObjectSpecification parentSpec) {
 if(parentSpec == null) {
 return Filters.any();
 }
 return new FilterObjectAssociation() {
 @Override
 public boolean accept(ObjectAssociation association) {
 final HiddenFacet facet = 
 association.getFacet(HiddenFacet.class);
 if(facet == null) {
 return true;
 }
 if (facet.where() != Where.REFERENCES_PARENT) {
 return true;
 }
 final ObjectSpecification assocSpec = 
 association.getSpecification();
 final boolean associationSpecIsOfParentSpec = 
 parentSpec.isOfType(assocSpec);
 final boolean isVisible = !associationSpecIsOfParentSpec;
 return isVisible;
 }
 };
 }
 Instead, the code should take into account the actual instance that is 
 referenced, not just the type (ie look at the object that the association 
 points back to).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-830) Raise lifecycle events on EventBus.

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-830?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-830:

Fix Version/s: (was: core-1.7.0)
   core-2.0.0

 Raise lifecycle events on EventBus.
 ---

 Key: ISIS-830
 URL: https://issues.apache.org/jira/browse/ISIS-830
 Project: Isis
  Issue Type: Bug
  Components: Core
Affects Versions: core-1.5.0
Reporter: Dan Haywood
Assignee: Dan Haywood
 Fix For: core-2.0.0


 Specifically:
 - ObjectPersistedEvent   // postCreate in JDO terminology
 - ObjectUpdatingEvent   // preStore in JDO terminology
 - ObjectUpdatedEvent// postStore in JDO terminology
 - ObjectRemovingEvent   // preDelete in JDO terms
 This would be a more flexible solution for many use cases than implementing 
 updating() etc can centralize logic.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-830) Wire up JDO events to publish onto our EventBus (rather than publish our own events).

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-830?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-830:

Summary: Wire up JDO events to publish onto our EventBus (rather than 
publish our own events).  (was: Raise lifecycle events on EventBus.)

 Wire up JDO events to publish onto our EventBus (rather than publish our own 
 events).
 -

 Key: ISIS-830
 URL: https://issues.apache.org/jira/browse/ISIS-830
 Project: Isis
  Issue Type: Bug
  Components: Core
Affects Versions: core-1.5.0
Reporter: Dan Haywood
Assignee: Dan Haywood
 Fix For: core-2.0.0


 Specifically:
 - ObjectPersistedEvent   // postCreate in JDO terminology
 - ObjectUpdatingEvent   // preStore in JDO terminology
 - ObjectUpdatedEvent// postStore in JDO terminology
 - ObjectRemovingEvent   // preDelete in JDO terms
 This would be a more flexible solution for many use cases than implementing 
 updating() etc can centralize logic.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-820) OidMarshaller - Identifier(PK) with special symbols should be allowed

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-820?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-820:

Fix Version/s: (was: core-1.7.0)
   core-2.0.0

 OidMarshaller - Identifier(PK) with special symbols should be allowed
 -

 Key: ISIS-820
 URL: https://issues.apache.org/jira/browse/ISIS-820
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: core-1.5.0
Reporter: Ranganath Chittari
Assignee: Dan Haywood
 Fix For: core-2.0.0

 Attachments: Identifier-#Symbol.log


 When a domain object has “#” symbol in its Primary key(of String type) and 
 try to query it, java.lang.IllegalArgumentException (Identifier contains # 
 symbol) exception is thrown: PFA Log file.
 This is presentation constraint and need to be enhanced by encoding and 
 decodng the PK in ISIS OidMarshaller 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-805) (Mac and Linux) Class discovery service throws errors on startup

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-805?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-805:

Summary: (Mac and Linux) Class discovery service throws errors on startup  
(was: Class discovery service throws errors on startup)

 (Mac and Linux) Class discovery service throws errors on startup
 

 Key: ISIS-805
 URL: https://issues.apache.org/jira/browse/ISIS-805
 Project: Isis
  Issue Type: Bug
  Components: Core
Affects Versions: core-1.5.0
Reporter: Jeroen van der Wal
Assignee: Dan Haywood
Priority: Minor
 Fix For: core-1.7.0


 These errors could be silently ignored:
 {code}
 2:58:45,672 [Reflections   ] could not create Dir using 
 directory from url file:/System/Library/Java/Extensions/libJ3DAudio.jnilib. 
 skipping.
 java.lang.RuntimeException: cannot use dir 
 /System/Library/Java/Extensions/libJ3DAudio.jnilib
   at org.reflections.vfs.SystemDir.init(SystemDir.java:20)
   at org.reflections.vfs.Vfs$DefaultUrlTypes$3.createDir(Vfs.java:229)
   at org.reflections.vfs.Vfs.fromURL(Vfs.java:98)
   at org.reflections.vfs.Vfs.fromURL(Vfs.java:90)
   at org.reflections.Reflections.scan(Reflections.java:165)
   at org.reflections.Reflections.init(Reflections.java:94)
   at org.reflections.Reflections.init(Reflections.java:135)
   at 
 org.apache.isis.applib.services.classdiscovery.ClassDiscoveryServiceUsingReflections.findSubTypesOfClasses(ClassDiscoveryServiceUsingReflections.java:37)
   at 
 org.apache.isis.applib.fixturescripts.FixtureScripts.findAndInstantiateFixtureScripts(FixtureScripts.java:99)
   at 
 org.apache.isis.applib.fixturescripts.FixtureScripts.init(FixtureScripts.java:95)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
   at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:606)
   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.specloader.ServiceInitializer.postConstruct(ServiceInitializer.java:126)
   at 
 org.apache.isis.core.runtime.system.IsisSystemFixturesHookAbstract.initializeServices(IsisSystemFixturesHookAbstract.java:181)
   at 
 org.apache.isis.core.runtime.system.IsisSystemFixturesHookAbstract.init(IsisSystemFixturesHookAbstract.java:141)
   at 
 org.apache.isis.core.runtime.runner.IsisInjectModule.provideIsisSystem(IsisInjectModule.java:136)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
   at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:606)
   at 
 com.google.inject.internal.ProviderMethod.get(ProviderMethod.java:104)
   at 
 com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
   at 
 com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
   at 
 com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
   at 
 com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
   at com.google.inject.Scopes$1$1.get(Scopes.java:65)
   at 
 com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
   at 
 com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:53)
   at 
 com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110)
   at 
 com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:75)
   at 
 com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:73)
   at 
 com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)
   at 
 com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:73)
   at 
 com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:60)
   at 
 com.google.inject.internal.InjectorImpl.injectMembers(InjectorImpl.java:944)
   at 
 org.apache.isis.viewer.wicket.viewer.IsisWicketApplication.init(IsisWicketApplication.java:210)
   at org.apache.wicket.Application.initApplication(Application.java:819)
   at 
 

[jira] [Updated] (ISIS-803) Replace lifecycle methods with additional EventBus events.

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-803?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-803:

Fix Version/s: (was: core-1.7.0)
   core-2.0.0

 Replace lifecycle methods with additional EventBus events.
 --

 Key: ISIS-803
 URL: https://issues.apache.org/jira/browse/ISIS-803
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: core-1.5.0
Reporter: Dan Haywood
Assignee: Dan Haywood
 Fix For: core-2.0.0


 This issue is to remove a feature that is only partly implemented in the JDO 
 objectstore, namely the lifecycle methods.
 Jeroen and I were discussing this, and think they are possibly an 
 anti-pattern since they tend to lead to fragile code.
 Rather than have the object pushing changes to others, it would be better 
 if an event were broadcast via the EventBus.  That way a subscribing service 
 could pull appropriate changes and do whatever is necessary.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-780) @Inject on field and @RequestScoped are incompatible - use a MetaModelValidator to detect

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-780?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-780:

Fix Version/s: (was: core-1.7.0)
   core-2.0.0

 @Inject on field and @RequestScoped are incompatible - use a 
 MetaModelValidator to detect
 -

 Key: ISIS-780
 URL: https://issues.apache.org/jira/browse/ISIS-780
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: core-1.4.0
Reporter: Dan Haywood
Assignee: Dan Haywood
 Fix For: core-2.0.0


 Our support for @RequestScoped annotation is home-grown; we create a 
 Javassist proxy for the service, which then delegates to dynamically created 
 instances of the actual service bound on a thread-local.
 The Javassist proxy automatically forwards all method calls to the underlying 
 service for the current thread.  
 If the request-scoped service has other services injected into it via methods 
 (ie setXxx(...) or injectXxx(...), then these method calls are forwarded just 
 like any other, and everything works fine.
 However, if the request-scoped service has its other services injected via a 
 field annotated with @RequestScoped, then the service will be injected into 
 the Javassist proxy and the underlying service will get a null pointer.
 One day we might replace our home-grown injection with a more sophisticated 
 third-party library (eg a CDI impl?) that can handle the above.  But until 
 such time, as a workaround we should fail-fast: detect the situation and 
 through an exception on start-up.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-802) Remove the ProfileStore component (in future, can raise a ProfileService as and when we identify a concrete reqt).

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-802?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-802:

Summary: Remove the ProfileStore component (in future, can raise a 
ProfileService as and when we identify a concrete reqt).  (was: Profile Service 
as a replacement for the ProfileStore component)

 Remove the ProfileStore component (in future, can raise a ProfileService as 
 and when we identify a concrete reqt).
 --

 Key: ISIS-802
 URL: https://issues.apache.org/jira/browse/ISIS-802
 Project: Isis
  Issue Type: New Feature
  Components: Core
Affects Versions: core-1.5.0
Reporter: Dan Haywood
Assignee: Dan Haywood
 Fix For: core-1.7.0


 As a write-up from IsisCon2014, Dan said:
  
   6. Profile Store
  
   The profile store is a component of the framework that is not supported by
   either the Wicket or Restful Objects viewers, but whose functionality is
   broadly superceded by the UserSettingsService.
 To which Kevin replied:
  When the UI becomes user-configurable (re-arranged, pallete change,
  etc) this should be demo'd.
  
  Where are user preferences (e.g. UI language, timezone, etc) currently
  stored? Do we have demo code?
 And so Dan said:
 There are two points here... where to store preferences, and how/what within 
 Isis should consume them.
 For the former, we have the UserSettingsService (part of applib); in the JDO 
 applib there is an entity-based implementation,
 For the latter, nothing in Isis particularly consumes these.  For timezones 
 we tend to use LocalDate which gets around the issue to some extent; but you 
 are right that the UserProfile class (in the profilestore) does hold this 
 Localization class; that needs surfacing out as a first-class concept somehow.
 So perhaps ProfileStore should live on, but not as a component, but instead 
 as a separate service.
 In all, I see three related subdomains:
 [Shiro security]   -  [Isis user profile (i18n etc) service]  -  [Isis user 
 settings service]
 I'll raise a ticket to capture this thinking so far.
 ~
 ... which is what this ticket is...



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-748) Improve the way we setup logging to vary between prod and test, and independent of viewer.

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-748?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-748:

Fix Version/s: (was: viewer-wicket-1.7.0)
   (was: core-1.7.0)
   core-2.0.0

 Improve the way we setup logging to vary between prod and test, and 
 independent of viewer.
 --

 Key: ISIS-748
 URL: https://issues.apache.org/jira/browse/ISIS-748
 Project: Isis
  Issue Type: Improvement
  Components: Core, Viewer: Wicket
Affects Versions: viewer-wicket-1.4.1, core-1.4.0
Reporter: Dan Haywood
Assignee: Dan Haywood
Priority: Minor
 Fix For: core-2.0.0


 There is very similar code in both IsisWebAppBootstrapper and the 
 IsisWicketApplication, using IsisLoggingConfigurer.  This should be factored 
 out into something reusable by both, as a context initlaizer (global webapp 
 scope).
 Then, in both cases let the logging.properties be picked up from some other 
 directory outside of WEB-INF.
 ~~~
 UPDATE: it seems that specifying log4j.configuration seems to override this 
 already???
 /usr/lib/jvm/java-7-openjdk-amd64/bin/java 
 -Djava.util.logging.config.file=/var/lib/tomcat7/conf/logging.properties 
 -Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms128m -Xmx768m 
 -XX:PermSize=64m -XX:MaxPermSize=256m -XX:+DisableExplicitGC 
 -Dlog4j.configuration=/etc/tomcat7/estatio/logging.properties 
 -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 
 -Djava.endorsed.dirs=/usr/share/tomcat7/endorsed -classpath 
 /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar 
 -Dcatalina.base=/var/lib/tomcat7 -Dcatalina.home=/usr/share/tomcat7 
 -Djava.io.tmpdir=/tmp/tomcat7-tomcat7-tmp 
 org.apache.catalina.startup.Bootstrap start



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-666) Provide hints so that the viewer can navigate to some other entity than that returned.

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-666:

Fix Version/s: (was: core-1.7.0)
   core-2.0.0

 Provide hints so that the viewer can navigate to some other entity than that 
 returned.
 --

 Key: ISIS-666
 URL: https://issues.apache.org/jira/browse/ISIS-666
 Project: Isis
  Issue Type: New Feature
  Components: Core
Affects Versions: core-1.3.0
Reporter: Dan Haywood
Assignee: Dan Haywood
 Fix For: core-2.0.0


 As per discussion in http://markmail.org/message/xhmeq62ywr2vqvje
 An @Navigate annotation, a @NotNavigate annotation, perhaps an @AggregateRoot 
 annotation.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-542) Restrict which entities a service action is contributed to (as either a contributed action or contributed assocation).

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-542?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-542:

Fix Version/s: (was: core-1.7.0)
   core-1.8.0

 Restrict which entities a service action is contributed to (as either a 
 contributed action or contributed assocation).
 --

 Key: ISIS-542
 URL: https://issues.apache.org/jira/browse/ISIS-542
 Project: Isis
  Issue Type: New Feature
  Components: Core
Affects Versions: core-1.2.0
Reporter: Dan Haywood
Assignee: Dan Haywood
 Fix For: core-1.8.0


 For example, an action
 void foo(A a, B b) { ... }
 will be contributed to both entities A and B.  We might want to allow it to 
 be contributed to one or the other.
 Suggestion is that @NotContributed annotation applies to action parameters 
 (with current behaviour maintained for compatibility as the default for all 
 parameters of the action):
 eg
 void foo(
 @NotContributed(As.Action) A, 
 @NotContributed(As.Association) B) { ... }



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Closed] (ISIS-506) Stability: defaultXxx() not working for properties...

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-506?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal closed ISIS-506.
---
   Resolution: Won't Fix
Fix Version/s: (was: core-1.7.0)

We are tending to move away from the container instantiating and initializing 
our pojos (eg the created() call), and this old feature is very much in the 
same spirit.

 Stability: defaultXxx() not working for properties...
 -

 Key: ISIS-506
 URL: https://issues.apache.org/jira/browse/ISIS-506
 Project: Isis
  Issue Type: Bug
  Components: Core
Reporter: Dan Haywood
Assignee: Dan Haywood
Priority: Minor





--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-491) Integrate JSR-349 validation.

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-491?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-491:

Fix Version/s: (was: core-1.7.0)
   core-2.0.0

 Integrate JSR-349 validation.
 -

 Key: ISIS-491
 URL: https://issues.apache.org/jira/browse/ISIS-491
 Project: Isis
  Issue Type: New Feature
  Components: Core
Affects Versions: core-1.2.0
Reporter: Dan Haywood
Assignee: Oscar Bou
 Fix For: core-1.8.0

   Original Estimate: 72h
  Remaining Estimate: 72h

 as per 
 http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/
 The reference implementation (Hibernate Validator) is Apache licensed [1].
 ~~~
 Implementation: should not be too difficult; mostly a matter of writing some 
 FacetFactories.
 It may not make sense to use every feature of JSR-349... 
 * constructor parameters
 * constraint groups
 1. In Isis bootstrapping, get hold and cache the Validator.  (This is 
 thread-safe, so could perhaps be global; maybe as a new top-level component 
 cf AuthorizationManager etc).
 ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
 validator = factory.getValidator();
 and also
 executableValidator = validator.forExecutables();
 Validating a property change can be done using:
 SetConstraintViolationCar constraintViolations = validator.validateValue(
 Car.class,
 manufacturer,
 null
 );
 assertEquals( 1, constraintViolations.size() );
 assertEquals( may not be null, 
 constraintViolations.iterator().next().getMessage() );
 (nb: using validator.validateProperty(...) would mean that the value has been 
 applied already).
 eg this would be a facet that implements ValidatingInteractionAdvisor and 
 acts on a ValidityContext of type PropertyModifyContext.  (eg subclass 
 PropertyValidateFacetAbstract)
 2. Validating a parameter of an action can be done using:
 Car object = new Car( Morris );
 Method method = Car.class.getMethod( drive, int.class );
 Object[] parameterValues = { 80 };
 SetConstraintViolationCar violations = 
 executableValidator.validateParameters(
 object,
 method,
 parameterValues
 );
 assertEquals( 1, violations.size() );
 Class? extends Annotation constraintType = violations.iterator()
 .next()
 .getConstraintDescriptor()
 .getAnnotation()
 .annotationType();
 assertEquals( Max.class, constraintType );
 This would be in a Facet that implements ValidatingInteractionAdvisor and 
 acts on a ValidityContext of type ActionInvocationContext (eg subclass 
 ActionValidationFacetAbstract)
 ~~~
 There are also some new features that could be implemented:
 3. validating the return value of an action:
 Car object = new Car( Morris );
 Method method = Car.class.getMethod( getPassengers );
 Object returnValue = Collections.PassengeremptyList();
 SetConstraintViolationCar violations = 
 executableValidator.validateReturnValue(
 object,
 method,
 returnValue
 );
 assertEquals( 1, violations.size() );
 Class? extends Annotation constraintType = violations.iterator()
 .next()
 .getConstraintDescriptor()
 .getAnnotation()
 .annotationType();
 assertEquals( Size.class, constraintType );
 This would need to be done after the action has been invoked; if the 
 constraint failed, then an exception would be thrown causing the transaction 
 to be aborted.  This might require a new subclass of ValidityContext, eg 
 ActionReturnValueContext.
 4. cf ISIS-479, all dirtied objects should be validated prior to commit.
 a) we re-validate all properties (using the value of the property as the 
 proposed value).  This would be done using InteractionUtils, called from 
 isAssociationValid with a ValidityContext of PropertyModifyContext.
 b) we validate the object, ie InteractionUtils, with  all with a 
 ValidityContext of ObjectValidityContext.
 We would then have a new facet, implementing ValidatingInteractionAdvisor and 
 acting on an ObjectValidityContext (eg subclass ValidateObjectFacetAbstract); 
 which should perform:
 SetConstraintViolationCar constraintViolations = validator.validate( car 
 );



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-491) Integrate JSR-349 validation.

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-491?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-491:

Fix Version/s: (was: core-2.0.0)
   core-1.8.0

 Integrate JSR-349 validation.
 -

 Key: ISIS-491
 URL: https://issues.apache.org/jira/browse/ISIS-491
 Project: Isis
  Issue Type: New Feature
  Components: Core
Affects Versions: core-1.2.0
Reporter: Dan Haywood
Assignee: Oscar Bou
 Fix For: core-1.8.0

   Original Estimate: 72h
  Remaining Estimate: 72h

 as per 
 http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/
 The reference implementation (Hibernate Validator) is Apache licensed [1].
 ~~~
 Implementation: should not be too difficult; mostly a matter of writing some 
 FacetFactories.
 It may not make sense to use every feature of JSR-349... 
 * constructor parameters
 * constraint groups
 1. In Isis bootstrapping, get hold and cache the Validator.  (This is 
 thread-safe, so could perhaps be global; maybe as a new top-level component 
 cf AuthorizationManager etc).
 ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
 validator = factory.getValidator();
 and also
 executableValidator = validator.forExecutables();
 Validating a property change can be done using:
 SetConstraintViolationCar constraintViolations = validator.validateValue(
 Car.class,
 manufacturer,
 null
 );
 assertEquals( 1, constraintViolations.size() );
 assertEquals( may not be null, 
 constraintViolations.iterator().next().getMessage() );
 (nb: using validator.validateProperty(...) would mean that the value has been 
 applied already).
 eg this would be a facet that implements ValidatingInteractionAdvisor and 
 acts on a ValidityContext of type PropertyModifyContext.  (eg subclass 
 PropertyValidateFacetAbstract)
 2. Validating a parameter of an action can be done using:
 Car object = new Car( Morris );
 Method method = Car.class.getMethod( drive, int.class );
 Object[] parameterValues = { 80 };
 SetConstraintViolationCar violations = 
 executableValidator.validateParameters(
 object,
 method,
 parameterValues
 );
 assertEquals( 1, violations.size() );
 Class? extends Annotation constraintType = violations.iterator()
 .next()
 .getConstraintDescriptor()
 .getAnnotation()
 .annotationType();
 assertEquals( Max.class, constraintType );
 This would be in a Facet that implements ValidatingInteractionAdvisor and 
 acts on a ValidityContext of type ActionInvocationContext (eg subclass 
 ActionValidationFacetAbstract)
 ~~~
 There are also some new features that could be implemented:
 3. validating the return value of an action:
 Car object = new Car( Morris );
 Method method = Car.class.getMethod( getPassengers );
 Object returnValue = Collections.PassengeremptyList();
 SetConstraintViolationCar violations = 
 executableValidator.validateReturnValue(
 object,
 method,
 returnValue
 );
 assertEquals( 1, violations.size() );
 Class? extends Annotation constraintType = violations.iterator()
 .next()
 .getConstraintDescriptor()
 .getAnnotation()
 .annotationType();
 assertEquals( Size.class, constraintType );
 This would need to be done after the action has been invoked; if the 
 constraint failed, then an exception would be thrown causing the transaction 
 to be aborted.  This might require a new subclass of ValidityContext, eg 
 ActionReturnValueContext.
 4. cf ISIS-479, all dirtied objects should be validated prior to commit.
 a) we re-validate all properties (using the value of the property as the 
 proposed value).  This would be done using InteractionUtils, called from 
 isAssociationValid with a ValidityContext of PropertyModifyContext.
 b) we validate the object, ie InteractionUtils, with  all with a 
 ValidityContext of ObjectValidityContext.
 We would then have a new facet, implementing ValidatingInteractionAdvisor and 
 acting on an ObjectValidityContext (eg subclass ValidateObjectFacetAbstract); 
 which should perform:
 SetConstraintViolationCar constraintViolations = validator.validate( car 
 );



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-491) Integrate JSR-349 validation.

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-491?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-491:

Description: 
as per 
http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/

The reference implementation (Hibernate Validator) is Apache licensed [1].

~~~
Implementation: should not be too difficult; mostly a matter of writing some 
FacetFactories.

It may not make sense to use every feature of JSR-349... 
* constructor parameters
* constraint groups


1. In Isis bootstrapping, get hold and cache the Validator.  (This is 
thread-safe, so could perhaps be global; maybe as a new top-level component cf 
AuthorizationManager etc).

{code}
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
{code}

and also

{code}
executableValidator = validator.forExecutables();
{code}


Validating a property change can be done using:

{code}
SetConstraintViolationCar constraintViolations = validator.validateValue(
Car.class,
manufacturer,
null
);

assertEquals( 1, constraintViolations.size() );
assertEquals( may not be null, 
constraintViolations.iterator().next().getMessage() );
{code}


(nb: using validator.validateProperty(...) would mean that the value has been 
applied already).

eg this would be a facet that implements ValidatingInteractionAdvisor and acts 
on a ValidityContext of type PropertyModifyContext.  (eg subclass 
PropertyValidateFacetAbstract)


2. Validating a parameter of an action can be done using:

{code}
Car object = new Car( Morris );
Method method = Car.class.getMethod( drive, int.class );
Object[] parameterValues = { 80 };
SetConstraintViolationCar violations = 
executableValidator.validateParameters(
object,
method,
parameterValues
);

assertEquals( 1, violations.size() );
Class? extends Annotation constraintType = violations.iterator()
.next()
.getConstraintDescriptor()
.getAnnotation()
.annotationType();
assertEquals( Max.class, constraintType );
{code}

This would be in a Facet that implements ValidatingInteractionAdvisor and acts 
on a ValidityContext of type ActionInvocationContext (eg subclass 
ActionValidationFacetAbstract)

~~~
There are also some new features that could be implemented:

3. validating the return value of an action:

{code}
Car object = new Car( Morris );
Method method = Car.class.getMethod( getPassengers );
Object returnValue = Collections.PassengeremptyList();
SetConstraintViolationCar violations = 
executableValidator.validateReturnValue(
object,
method,
returnValue
);

assertEquals( 1, violations.size() );
Class? extends Annotation constraintType = violations.iterator()
.next()
.getConstraintDescriptor()
.getAnnotation()
.annotationType();
assertEquals( Size.class, constraintType );
{code}


This would need to be done after the action has been invoked; if the constraint 
failed, then an exception would be thrown causing the transaction to be 
aborted.  This might require a new subclass of ValidityContext, eg 
ActionReturnValueContext.


4. cf ISIS-479, all dirtied objects should be validated prior to commit.
a) we re-validate all properties (using the value of the property as the 
proposed value).  This would be done using InteractionUtils, called from 
isAssociationValid with a ValidityContext of PropertyModifyContext.
b) we validate the object, ie InteractionUtils, with  all with a 
ValidityContext of ObjectValidityContext.

We would then have a new facet, implementing ValidatingInteractionAdvisor and 
acting on an ObjectValidityContext (eg subclass ValidateObjectFacetAbstract); 
which should perform:

{code}
SetConstraintViolationCar constraintViolations = validator.validate( car );
{code}




  was:
as per 
http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/

The reference implementation (Hibernate Validator) is Apache licensed [1].

~~~
Implementation: should not be too difficult; mostly a matter of writing some 
FacetFactories.

It may not make sense to use every feature of JSR-349... 
* constructor parameters
* constraint groups


1. In Isis bootstrapping, get hold and cache the Validator.  (This is 
thread-safe, so could perhaps be global; maybe as a new top-level component cf 
AuthorizationManager etc).

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();

and also

executableValidator = validator.forExecutables();


Validating a property change can be done using:

SetConstraintViolationCar constraintViolations = validator.validateValue(
Car.class,
manufacturer,
null
);

assertEquals( 1, constraintViolations.size() );
assertEquals( may not be null, 
constraintViolations.iterator().next().getMessage() );


(nb: using validator.validateProperty(...) 

[jira] [Updated] (ISIS-487) Domain Object not validated by Isis before being sent to the database and RuntimeException handling on IsisTransactionManager

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-487?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-487:

Fix Version/s: (was: core-1.7.0)
   core-2.0.0

 Domain Object not validated by Isis before being sent to the database and 
 RuntimeException handling on IsisTransactionManager
 -

 Key: ISIS-487
 URL: https://issues.apache.org/jira/browse/ISIS-487
 Project: Isis
  Issue Type: Bug
  Components: Core
Affects Versions: core-1.2.0
Reporter: Oscar Bou
Assignee: Dan Haywood
 Fix For: core-2.0.0


 Experiencing the following issues:
 1. Domain Object not validated by Isis before being sent to the database 
 (executed within a BDD test; perhaps that's relevant).
 2. Not sure if I could/should throw an exception on the onFailure() closure 
 (as the Isis transaction wouldn't be aborted).
 3. I would expect to be able to know the Runtime Exception that has 
 originated the failure.
 I'm executing this code from inside a BDD integration test.
 I have a Domain Object that inherits from this class, which contains a 
 required name property:
 public abstract class AbstractMultiTenantEntity extends
 AbstractMultiTenantObject implements MultiTenantEntity {
 /**
 * Name of this Entity.
 */
 private String name;
 @Column(allowsNull = false)
 @Override
 @MemberOrder(sequence = 0.1)
 public String getName() {
 return this.name;
 }
 @Override
 public void setName(final String name) {
 this.name = name;
 }
 public String validateName(final String name) {
 if (name == null) {
 return Name cannot be an empty string;
 } else {
 return null;
 }
 }
 ...
 }
 The Domain Object class is declared simply as:
 public class Risk extends AbstractMultiTenantEntity {
 ...
 }
 I have a factory method like this one:
 public Risk addQuantitativeRiskToAsset(...) {
 
 // Here the name field is null.
 this.persist(risk);
 return risk;
 }
 The point is that, due to a programming error, I was not initializing the 
 name field (it was null). But this could happen also on other use cases.
 But the main problem is that, when the this.persist(risk) method is executed, 
 the INSERT SQL instruction appears in the log and a database CONSTRAINT 
 exception requiring the NAME database table field not to be NULL appears  (so 
 Isis has not previously validated the domain object and detected that the 
 name property was null).
 As the database persist is cached, the only line appearing at the log is:
 10:44:16,317  [DataNucleusSimplePersistAlgorithm main   INFO ]  persist 
 PojoAdapter@6ac42aea[T~~:!com.xms.framework.risk.domain.model.Risk:461a09cf-c483-4779-ae58-a1840baf6a9c,specification=Risk,version=null,pojo-toString=com.xms.framework.risk.domain.model.Risk@6ee01906,pojo-hash=#6ee01906]
 But on the first flush(), when the persistence manager tries to insert the 
 record the following exception is showed in the log:
 -
 11:12:30,643  [DataNucleusSimplePersistAlgorithm main   INFO ]  persist 
 PojoAdapter@6d70c116[T~~:!com.xms.framework.risk.domain.model.Risk:bff8097b-72d9-40e1-b6de-aab8f5743194,specification=Risk,version=null,pojo-toString=com.xms.framework.risk.domain.model.Risk@85f4d6e2,pojo-hash=#85f4d6e2]
 11:12:30,894  [auditmain   INFO ]  2. 
 PreparedStatement.new PreparedStatement returned 
 11:12:30,894  [auditmain   INFO ]  2. 
 Connection.prepareStatement(INSERT INTO RISK 
 (ID,NAME,AUTOMATICNAMING,LIKELIHOOD,CODE,EVENT_EVENT_ID_OID,IMPACT,UPDATEDBYUSER,DESCRIPTION,CATEGORY_RISKCATEGORY_ID_OID,ASSET_ENTITY_ID_OID,EVENTDESCRIPTION,CONSEQUENCESDESCRIPTION,RISKREGISTER_RISKREGISTER_ID_OID,EVENTSOURCEDESCRIPTION,OWNER_BUSINESSACTOR_ID_OID,IMPACTLEVEL_IMPACTLEVEL_ID_OID,CREATEDBYUSER,TENANTID,EVENTSOURCE_EVENTSOURCE_ID_OID,LIKELIHOODLEVEL_LIKELIHOODLEVEL_ID_OID,DATECREATED,DATEUPDATED,RISKSLEADEDBYIT_VULNERABILITY_ID_OID,RISKSMODIFIED_CONTROL_ID_OID)
  VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?), 1) returned 
 net.sf.log4jdbc.PreparedStatementSpy@afe1bc5
 11:12:30,894  [auditmain   INFO ]  2. 
 PreparedStatement.clearBatch() returned 
 11:12:30,894  [auditmain   INFO ]  2. 
 PreparedStatement.setTimestamp(23, 2013-08-03 11:12:30.643, 
 

[jira] [Updated] (ISIS-487) Domain Object not validated by Isis before being sent to the database and RuntimeException handling on IsisTransactionManager

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-487?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-487:

Description: 
Experiencing the following issues:
1. Domain Object not validated by Isis before being sent to the database 
(executed within a BDD test; perhaps that's relevant).
2. Not sure if I could/should throw an exception on the onFailure() closure 
(as the Isis transaction wouldn't be aborted).
3. I would expect to be able to know the Runtime Exception that has originated 
the failure.



I'm executing this code from inside a BDD integration test.


I have a Domain Object that inherits from this class, which contains a required 
name property:

{code}
public abstract class AbstractMultiTenantEntity extends
AbstractMultiTenantObject implements MultiTenantEntity {

/**
* Name of this Entity.
*/
private String name;

@Column(allowsNull = false)
@Override
@MemberOrder(sequence = 0.1)
public String getName() {
return this.name;
}

@Override
public void setName(final String name) {
this.name = name;
}

public String validateName(final String name) {
if (name == null) {
return Name cannot be an empty string;
} else {
return null;
}
}

...
}
{code}



The Domain Object class is declared simply as:

{code}
public class Risk extends AbstractMultiTenantEntity {

...

}

{code}

I have a factory method like this one:

{code}
public Risk addQuantitativeRiskToAsset(...) {



// Here the name field is null.
this.persist(risk);
return risk;
}
{code}



The point is that, due to a programming error, I was not initializing the 
name field (it was null). But this could happen also on other use cases.

But the main problem is that, when the this.persist(risk) method is executed, 
the INSERT SQL instruction appears in the log and a database CONSTRAINT 
exception requiring the NAME database table field not to be NULL appears  (so 
Isis has not previously validated the domain object and detected that the 
name property was null).



As the database persist is cached, the only line appearing at the log is:


10:44:16,317  [DataNucleusSimplePersistAlgorithm main   INFO ]  persist 
PojoAdapter@6ac42aea[T~~:!com.xms.framework.risk.domain.model.Risk:461a09cf-c483-4779-ae58-a1840baf6a9c,specification=Risk,version=null,pojo-toString=com.xms.framework.risk.domain.model.Risk@6ee01906,pojo-hash=#6ee01906]


But on the first flush(), when the persistence manager tries to insert the 
record the following exception is showed in the log:


-

{code}
11:12:30,643  [DataNucleusSimplePersistAlgorithm main   INFO ]  persist 
PojoAdapter@6d70c116[T~~:!com.xms.framework.risk.domain.model.Risk:bff8097b-72d9-40e1-b6de-aab8f5743194,specification=Risk,version=null,pojo-toString=com.xms.framework.risk.domain.model.Risk@85f4d6e2,pojo-hash=#85f4d6e2]
11:12:30,894  [auditmain   INFO ]  2. PreparedStatement.new 
PreparedStatement returned 
11:12:30,894  [auditmain   INFO ]  2. 
Connection.prepareStatement(INSERT INTO RISK 
(ID,NAME,AUTOMATICNAMING,LIKELIHOOD,CODE,EVENT_EVENT_ID_OID,IMPACT,UPDATEDBYUSER,DESCRIPTION,CATEGORY_RISKCATEGORY_ID_OID,ASSET_ENTITY_ID_OID,EVENTDESCRIPTION,CONSEQUENCESDESCRIPTION,RISKREGISTER_RISKREGISTER_ID_OID,EVENTSOURCEDESCRIPTION,OWNER_BUSINESSACTOR_ID_OID,IMPACTLEVEL_IMPACTLEVEL_ID_OID,CREATEDBYUSER,TENANTID,EVENTSOURCE_EVENTSOURCE_ID_OID,LIKELIHOODLEVEL_LIKELIHOODLEVEL_ID_OID,DATECREATED,DATEUPDATED,RISKSLEADEDBYIT_VULNERABILITY_ID_OID,RISKSMODIFIED_CONTROL_ID_OID)
 VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?), 1) returned 
net.sf.log4jdbc.PreparedStatementSpy@afe1bc5
11:12:30,894  [auditmain   INFO ]  2. 
PreparedStatement.clearBatch() returned 
11:12:30,894  [auditmain   INFO ]  2. 
PreparedStatement.setTimestamp(23, 2013-08-03 11:12:30.643, 
java.util.GregorianCalendar[time=1375521135947,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id=Europe/Madrid,offset=360,dstSavings=360,useDaylight=true,transitions=165,lastRule=java.util.SimpleTimeZone[id=Europe/Madrid,offset=360,dstSavings=360,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=360,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=360,endTimeMode=2]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2013,MONTH=7,WEEK_OF_YEAR=31,WEEK_OF_MONTH=1,DAY_OF_MONTH=3,DAY_OF_YEAR=215,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=11,HOUR_OF_DAY=11,MINUTE=12,SECOND=15,MILLISECOND=947,ZONE_OFFSET=360,DST_OFFSET=360])
 returned 
11:12:30,895  [auditmain   INFO ]  2. 
PreparedStatement.setTimestamp(22, 2013-08-03 11:12:30.643, 

[jira] [Updated] (ISIS-483) Not properly recognizing Collections of generics as Action return type

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-483:

Fix Version/s: (was: core-1.7.0)
   core-2.0.0

 Not properly recognizing Collections of generics as Action return type
 --

 Key: ISIS-483
 URL: https://issues.apache.org/jira/browse/ISIS-483
 Project: Isis
  Issue Type: Bug
  Components: Core
Affects Versions: core-1.2.0
Reporter: Oscar Bou
Assignee: Oscar Bou
 Fix For: core-2.0.0


 Create a repository that inherits from a generic one, which implements a 
 generic function like this:
 public abstract class MyAbstractDomainObjectRepositoryAndFactoryDO extends 
 MyAbstractDomainObject
   extends AbstractFactoryAndRepository {
   public ListDO listAll() {
   return this.allInstances(this.domainObjectClass);
   }
   ...
 }
 Create a concrete implementation of the previous repository like this one, 
 which introduces a new action/method:
 public class DomainEntityClassCustomRepository extends
   
 AbstractMultiTenantEntityRepositoryAndFactoryDomainEntityClass {
   ...
   public ListRiskRegister listAllRiskRegisters() {
   return this.listAll();
   }
   ...
 }
 And DomainEntityClass inherits from MyAbstractDomainObject.
 If the listAllRiskRegisters action is invoked from the Wicket viewer it 
 works perfectly, and a list of DomainEntityClass'es is shown.
 And if the list only contains 1 element, the listAll action also shows that 
 element.
 But if the listAll action is invoked and the list contains more than 1 
 element the following exception is thrown:
 org.apache.wicket.WicketRuntimeException
 Can't instantiate page using constructor 'public 
 org.apache.isis.viewer.wicket.ui.pages.action.ActionPage(org.apache.wicket.request.mapper.parameter.PageParameters)'
  and argument 'pageType=[ACTION], actionSingleResultsMode=[REDIRECT], 
 objectOid=[com.company.DomainEntityClassCustomRepository:1], 
 actionType=[USER], 
 actionOwningSpec=[com.company.DomainEntityClassCustomRepository], 
 actionId=[listAll()], pageTitle=[List All], actionMode=[RESULTS]'. Might be 
 it doesn't exist, may be it is not visible (public).
 org.apache.wicket.session.DefaultPageFactory#newPage(DefaultPageFactory.java:193)
 org.apache.wicket.session.DefaultPageFactory#newPage(DefaultPageFactory.java:98)
 org.apache.wicket.DefaultMapperContext#newPageInstance(DefaultMapperContext.java:137)
 org.apache.wicket.core.request.handler.PageProvider#resolvePageInstance(PageProvider.java:268)
 org.apache.wicket.core.request.handler.PageProvider#getPageInstance(PageProvider.java:166)
 org.apache.wicket.request.handler.render.PageRenderer#getPage(PageRenderer.java:78)
 org.apache.wicket.request.handler.render.WebPageRenderer#renderPage(WebPageRenderer.java:94)
 org.apache.wicket.request.handler.render.WebPageRenderer#respond(WebPageRenderer.java:196)
 org.apache.wicket.core.request.handler.RenderPageRequestHandler#respond(RenderPageRequestHandler.java:165)
 org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:854)
 org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:64)
 org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:254)
 org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:211)
 org.apache.wicket.request.cycle.RequestCycle#processRequestAndDetach(RequestCycle.java:282)
 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:1326)
 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:1326)
 org.eclipse.jetty.servlet.ServletHandler#doHandle(ServletHandler.java:479)
 org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:119)
 org.eclipse.jetty.security.SecurityHandler#handle(SecurityHandler.java:520)
 

[jira] [Updated] (ISIS-483) Not properly recognizing Collections of generics as Action return type

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-483:

Description: 
Create a repository that inherits from a generic one, which implements a 
generic function like this:


{code}
public abstract class MyAbstractDomainObjectRepositoryAndFactoryDO extends 
MyAbstractDomainObject
extends AbstractFactoryAndRepository {

public ListDO listAll() {
return this.allInstances(this.domainObjectClass);
}

...
}
{code}

Create a concrete implementation of the previous repository like this one, 
which introduces a new action/method:

{code}
public class DomainEntityClassCustomRepository extends

AbstractMultiTenantEntityRepositoryAndFactoryDomainEntityClass {

...

public ListRiskRegister listAllRiskRegisters() {
return this.listAll();
}
...
}
{code}


And:
DomainEntityClass inherits from MyAbstractDomainObject.


If the listAllRiskRegisters action is invoked from the Wicket viewer it works 
perfectly, and a list of DomainEntityClass'es is shown.

And if the list only contains 1 element, the listAll action also shows that 
element.

But if the listAll action is invoked and the list contains more than 1 
element the following exception is thrown:

{code}
org.apache.wicket.WicketRuntimeException
Can't instantiate page using constructor 'public 
org.apache.isis.viewer.wicket.ui.pages.action.ActionPage(org.apache.wicket.request.mapper.parameter.PageParameters)'
 and argument 'pageType=[ACTION], actionSingleResultsMode=[REDIRECT], 
objectOid=[com.company.DomainEntityClassCustomRepository:1], actionType=[USER], 
actionOwningSpec=[com.company.DomainEntityClassCustomRepository], 
actionId=[listAll()], pageTitle=[List All], actionMode=[RESULTS]'. Might be it 
doesn't exist, may be it is not visible (public).
org.apache.wicket.session.DefaultPageFactory#newPage(DefaultPageFactory.java:193)
org.apache.wicket.session.DefaultPageFactory#newPage(DefaultPageFactory.java:98)
org.apache.wicket.DefaultMapperContext#newPageInstance(DefaultMapperContext.java:137)
org.apache.wicket.core.request.handler.PageProvider#resolvePageInstance(PageProvider.java:268)
org.apache.wicket.core.request.handler.PageProvider#getPageInstance(PageProvider.java:166)
org.apache.wicket.request.handler.render.PageRenderer#getPage(PageRenderer.java:78)
org.apache.wicket.request.handler.render.WebPageRenderer#renderPage(WebPageRenderer.java:94)
org.apache.wicket.request.handler.render.WebPageRenderer#respond(WebPageRenderer.java:196)
org.apache.wicket.core.request.handler.RenderPageRequestHandler#respond(RenderPageRequestHandler.java:165)
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:854)
org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:64)
org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:254)
org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:211)
org.apache.wicket.request.cycle.RequestCycle#processRequestAndDetach(RequestCycle.java:282)
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:1326)
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:1326)
org.eclipse.jetty.servlet.ServletHandler#doHandle(ServletHandler.java:479)
org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:119)
org.eclipse.jetty.security.SecurityHandler#handle(SecurityHandler.java:520)
org.eclipse.jetty.server.session.SessionHandler#doHandle(SessionHandler.java:227)
org.eclipse.jetty.server.handler.ContextHandler#doHandle(ContextHandler.java:940)
org.eclipse.jetty.servlet.ServletHandler#doScope(ServletHandler.java:409)
org.eclipse.jetty.server.session.SessionHandler#doScope(SessionHandler.java:186)
org.eclipse.jetty.server.handler.ContextHandler#doScope(ContextHandler.java:874)
org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:117)

[jira] [Updated] (ISIS-404) Testing if a wrapped Domain Object has been persisted fails

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-404?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-404:

Assignee: Dan Haywood  (was: Jeroen van der Wal)

 Testing if a wrapped Domain Object has been persisted fails
 -

 Key: ISIS-404
 URL: https://issues.apache.org/jira/browse/ISIS-404
 Project: Isis
  Issue Type: Bug
  Components: Core
Affects Versions: core-1.1.0
 Environment: Testing against current JUnit viewer snapshot over the 
 1.0.2 quickstart prototype.
Reporter: Oscar Bou
Assignee: Dan Haywood
  Labels: test
 Fix For: core-1.7.0


 While doing tests over factory actions, one assert would be to verify the 
 object has been persisted through the 
 DomainObjectContainer.isPersistent(domainObject) method. 
 If the evaluation is done over a wrapped object, it returns false.
 If it's done over the original object, it returns true.
 As an example:
   // Test if the Domain Object has been persisted.
   assertTrue(domainObjectContainer
   
 .isPersistent(communicationPathAssociatedWithNode));
   // Node must be wrapped for the Apache Isis validators to be 
 executed.
   communicationPathAssociatedWithNode = 
 wrapped(communicationPathAssociatedWithNode);
   assertTrue(domainObjectContainer
   
 .isPersistent(communicationPathAssociatedWithNode));
 The last assertion fails. The only difference I expected was the validation 
 of the programming model.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (ISIS-404) Testing if a wrapped Domain Object has been persisted fails

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-404?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal reassigned ISIS-404:
---

Assignee: Jeroen van der Wal  (was: Oscar Bou)

 Testing if a wrapped Domain Object has been persisted fails
 -

 Key: ISIS-404
 URL: https://issues.apache.org/jira/browse/ISIS-404
 Project: Isis
  Issue Type: Bug
  Components: Core
Affects Versions: core-1.1.0
 Environment: Testing against current JUnit viewer snapshot over the 
 1.0.2 quickstart prototype.
Reporter: Oscar Bou
Assignee: Jeroen van der Wal
  Labels: test
 Fix For: core-1.7.0


 While doing tests over factory actions, one assert would be to verify the 
 object has been persisted through the 
 DomainObjectContainer.isPersistent(domainObject) method. 
 If the evaluation is done over a wrapped object, it returns false.
 If it's done over the original object, it returns true.
 As an example:
   // Test if the Domain Object has been persisted.
   assertTrue(domainObjectContainer
   
 .isPersistent(communicationPathAssociatedWithNode));
   // Node must be wrapped for the Apache Isis validators to be 
 executed.
   communicationPathAssociatedWithNode = 
 wrapped(communicationPathAssociatedWithNode);
   assertTrue(domainObjectContainer
   
 .isPersistent(communicationPathAssociatedWithNode));
 The last assertion fails. The only difference I expected was the validation 
 of the programming model.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Closed] (ISIS-88) Enhance I18nFacetDecorator to allow descriptions and help text to be looked up for action parameters.

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-88?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal closed ISIS-88.
--
   Resolution: Won't Fix
Fix Version/s: (was: core-1.7.0)

Let's fix this when someone asks for it. And in any case, we know that the 
current implementation only takes the server locale into account, not the 
client locale.

 Enhance I18nFacetDecorator to allow descriptions and help text to be looked 
 up for action parameters.
 -

 Key: ISIS-88
 URL: https://issues.apache.org/jira/browse/ISIS-88
 Project: Isis
  Issue Type: New Feature
  Components: Core
Affects Versions: 0.1.2-incubating, core-1.0.0
Reporter: Dan Haywood
Priority: Minor

 The I18nFacetDecorator allows name, description and help text to be looked up 
 for properties, collections and actions, but only supports names for 
 parameters.  It should be enhanced to support description and help text for 
 action parameters also.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (ISIS-86) I18n should be performed with respect to the user's Locale, not the location of the server.

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-86?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-86:
---
Fix Version/s: (was: core-1.7.0)
   core-1.8.0

 I18n should be performed with respect to the user's Locale, not the location 
 of the server.
 ---

 Key: ISIS-86
 URL: https://issues.apache.org/jira/browse/ISIS-86
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: 0.1.2-incubating, core-1.0.0
Reporter: Dan Haywood
Priority: Minor
 Fix For: core-1.8.0


 Looking through the I18nFacetDecorator, it seems to do its localization with 
 respect to the locale of the server (for a webapp).  Rob recently introduced 
 the Localization interface in the applib, available in the default runtime's 
 UserProfile interface, and so it would be better to have the i18n done with 
 respect to that interface instead.
 At the same time, I think we ought to have Localization NOT be dependent on 
 the default runtime, ie it ought to be available from the UserMemento, rather 
 than in UserProfile.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Closed] (ISIS-86) I18n should be performed with respect to the user's Locale, not the location of the server.

2014-09-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-86?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal closed ISIS-86.
--
   Resolution: Duplicate
Fix Version/s: (was: core-1.8.0)

 I18n should be performed with respect to the user's Locale, not the location 
 of the server.
 ---

 Key: ISIS-86
 URL: https://issues.apache.org/jira/browse/ISIS-86
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: 0.1.2-incubating, core-1.0.0
Reporter: Dan Haywood
Priority: Minor

 Looking through the I18nFacetDecorator, it seems to do its localization with 
 respect to the locale of the server (for a webapp).  Rob recently introduced 
 the Localization interface in the applib, available in the default runtime's 
 UserProfile interface, and so it would be better to have the i18n done with 
 respect to that interface instead.
 At the same time, I think we ought to have Localization NOT be dependent on 
 the default runtime, ie it ought to be available from the UserMemento, rather 
 than in UserProfile.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Closed] (ISIS-850) Target field in IsisCommand is to small to save actions on viewmodels

2014-08-22 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-850?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal closed ISIS-850.
---

Resolution: Fixed

Since the command module has moved to Isisaddons it's fixed there:
https://github.com/isisaddons/isis-module-command/issues/1

 Target field in IsisCommand is to small to save actions on viewmodels
 -

 Key: ISIS-850
 URL: https://issues.apache.org/jira/browse/ISIS-850
 Project: Isis
  Issue Type: Bug
  Components: Modules
Affects Versions: core-1.6.0
Reporter: Jeroen van der Wal
Assignee: Jeroen van der Wal

 When executing an action on a viewmodel the target contains the full memento 
 so it will exceed the 255 characters of the column in the IsisCommand table.
 Need to investigate further what the maximum column length should be and 
 decide to either extend or change to Clob/Text



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (ISIS-852) Derived property cannot be written properly

2014-08-13 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-852?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14095983#comment-14095983
 ] 

Jeroen van der Wal commented on ISIS-852:
-

I don't know if this is a bug, Isis is just not designed to enable editing of 
derived properties. The pattern we are using is disabling the edit button (by 
adding @Immutable) and only allow changes through an action. In your case:

{code}
@javax.jdo.annotations.Persistent
private DateTime beginAt;

public DateTime getBeginAt() {
return beginAt;
}

public void setBeginAt(DateTime beginAt) {
this.beginAt = beginAt;
}

public AbstractDomainObject changeBeginDate(LocalDate beginDate) {
setBeginAt(getBeginAt().withDate(beginDate.getYear(), 
beginDate.getMonthOfYear(), beginDate.getDayOfMonth()));
return this;
}
{code}

 Derived property cannot be written properly
 ---

 Key: ISIS-852
 URL: https://issues.apache.org/jira/browse/ISIS-852
 Project: Isis
  Issue Type: Bug
  Components: Core, Core: Objectstore: JDO
Affects Versions: objectstore-jdo-1.5.0, core-1.5.0
Reporter: Thomas Koren
Assignee: Dan Haywood

 when using the proposed modifyXxx syntax to make a derived property writable, 
 it is rendered as disabled in wicket viewer.
 {code:title=demo|borderStyle=solid}
 public LocalDate getDerivedDate() { ... }
 public void modifyDerivedDate(final LocalDate date) { ... }
 {code}
 when using the alternative setXxx syntax, the UI component is writable. but 
 in this case, the value of the derived property is not written to the 
 persisted property.
 {code:title=demo|borderStyle=solid}
 // {{ BeginAt (property)
 @javax.jdo.annotations.Persistent
 private DateTime beginAt;
 @Disabled
 @javax.jdo.annotations.Column(allowsNull = false)
 public DateTime getBeginAt() {
 return beginAt;
 }
 public void setBeginAt(final DateTime beginAt) {
 this.beginAt = beginAt;
 }
 // }}
 // {{ DerivedDate (property)
 @NotPersisted
 @NotPersistent
 public LocalDate getDerivedDate() {
 return getBeginAt().toLocalDate();
 }
 public void setDerivedDate(final LocalDate beginDate) {
 setBeginAt(getBeginAt().withDate(beginDate.getYear(), 
 beginDate.getMonthOfYear(), beginDate.getDayOfMonth()));
 }
 // }}
 {code}
 it seems like the value set by the derived property gets overwritten by the 
 original/old value of the persisted property that is displayed in the wicket 
 component.
 therefore it might only be an issue, if original and derived properties are 
 members of the same entity and displayed via wicket viewer.
 some background:
 i try to use 3 ui components  (= derived properties: date, hour, minute) to 
 set a single persisted DateTime property.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Updated] (ISIS-853) joda DateTime properties loose time when persisted

2014-08-13 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-853?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-853:


Component/s: (was: Core: Objectstore: JDO)
 Viewer: Wicket

 joda DateTime properties loose time when persisted
 --

 Key: ISIS-853
 URL: https://issues.apache.org/jira/browse/ISIS-853
 Project: Isis
  Issue Type: Bug
  Components: Viewer: Wicket
Affects Versions: viewer-wicket-1.6.0
Reporter: Thomas Koren
Assignee: Dan Haywood

 creating and persisting an entity just containing a DateTime and a String 
 property via service action works just fine.
 when this entity is reopened and saved in wicket viewer without changing 
 anything, the time component is set to 00:00.
 or, to be more precise: to 00:00 UTC which, in my case, is rendered as 02:00  
 (vienna: UTC+1 + daylight saving time)



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Updated] (ISIS-853) joda DateTime properties loose time when persisted

2014-08-13 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-853?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-853:


Affects Version/s: (was: objectstore-jdo-1.5.0)
   viewer-wicket-1.6.0

 joda DateTime properties loose time when persisted
 --

 Key: ISIS-853
 URL: https://issues.apache.org/jira/browse/ISIS-853
 Project: Isis
  Issue Type: Bug
  Components: Viewer: Wicket
Affects Versions: viewer-wicket-1.6.0
Reporter: Thomas Koren
Assignee: Dan Haywood

 creating and persisting an entity just containing a DateTime and a String 
 property via service action works just fine.
 when this entity is reopened and saved in wicket viewer without changing 
 anything, the time component is set to 00:00.
 or, to be more precise: to 00:00 UTC which, in my case, is rendered as 02:00  
 (vienna: UTC+1 + daylight saving time)



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Updated] (ISIS-852) Derived property cannot be written properly

2014-08-13 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-852?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-852:


Affects Version/s: (was: objectstore-jdo-1.5.0)
   (was: core-1.5.0)
   viewer-wicket-1.6.0

 Derived property cannot be written properly
 ---

 Key: ISIS-852
 URL: https://issues.apache.org/jira/browse/ISIS-852
 Project: Isis
  Issue Type: Bug
  Components: Viewer: Wicket
Affects Versions: viewer-wicket-1.6.0
Reporter: Thomas Koren
Assignee: Dan Haywood

 when using the proposed modifyXxx syntax to make a derived property writable, 
 it is rendered as disabled in wicket viewer.
 {code:title=demo|borderStyle=solid}
 public LocalDate getDerivedDate() { ... }
 public void modifyDerivedDate(final LocalDate date) { ... }
 {code}
 when using the alternative setXxx syntax, the UI component is writable. but 
 in this case, the value of the derived property is not written to the 
 persisted property.
 {code:title=demo|borderStyle=solid}
 // {{ BeginAt (property)
 @javax.jdo.annotations.Persistent
 private DateTime beginAt;
 @Disabled
 @javax.jdo.annotations.Column(allowsNull = false)
 public DateTime getBeginAt() {
 return beginAt;
 }
 public void setBeginAt(final DateTime beginAt) {
 this.beginAt = beginAt;
 }
 // }}
 // {{ DerivedDate (property)
 @NotPersisted
 @NotPersistent
 public LocalDate getDerivedDate() {
 return getBeginAt().toLocalDate();
 }
 public void setDerivedDate(final LocalDate beginDate) {
 setBeginAt(getBeginAt().withDate(beginDate.getYear(), 
 beginDate.getMonthOfYear(), beginDate.getDayOfMonth()));
 }
 // }}
 {code}
 it seems like the value set by the derived property gets overwritten by the 
 original/old value of the persisted property that is displayed in the wicket 
 component.
 therefore it might only be an issue, if original and derived properties are 
 members of the same entity and displayed via wicket viewer.
 some background:
 i try to use 3 ui components  (= derived properties: date, hour, minute) to 
 set a single persisted DateTime property.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Updated] (ISIS-852) Derived property cannot be written properly

2014-08-13 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-852?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-852:


Component/s: (was: Core: Objectstore: JDO)
 (was: Core)
 Viewer: Wicket

 Derived property cannot be written properly
 ---

 Key: ISIS-852
 URL: https://issues.apache.org/jira/browse/ISIS-852
 Project: Isis
  Issue Type: Bug
  Components: Viewer: Wicket
Affects Versions: viewer-wicket-1.6.0
Reporter: Thomas Koren
Assignee: Dan Haywood

 when using the proposed modifyXxx syntax to make a derived property writable, 
 it is rendered as disabled in wicket viewer.
 {code:title=demo|borderStyle=solid}
 public LocalDate getDerivedDate() { ... }
 public void modifyDerivedDate(final LocalDate date) { ... }
 {code}
 when using the alternative setXxx syntax, the UI component is writable. but 
 in this case, the value of the derived property is not written to the 
 persisted property.
 {code:title=demo|borderStyle=solid}
 // {{ BeginAt (property)
 @javax.jdo.annotations.Persistent
 private DateTime beginAt;
 @Disabled
 @javax.jdo.annotations.Column(allowsNull = false)
 public DateTime getBeginAt() {
 return beginAt;
 }
 public void setBeginAt(final DateTime beginAt) {
 this.beginAt = beginAt;
 }
 // }}
 // {{ DerivedDate (property)
 @NotPersisted
 @NotPersistent
 public LocalDate getDerivedDate() {
 return getBeginAt().toLocalDate();
 }
 public void setDerivedDate(final LocalDate beginDate) {
 setBeginAt(getBeginAt().withDate(beginDate.getYear(), 
 beginDate.getMonthOfYear(), beginDate.getDayOfMonth()));
 }
 // }}
 {code}
 it seems like the value set by the derived property gets overwritten by the 
 original/old value of the persisted property that is displayed in the wicket 
 component.
 therefore it might only be an issue, if original and derived properties are 
 members of the same entity and displayed via wicket viewer.
 some background:
 i try to use 3 ui components  (= derived properties: date, hour, minute) to 
 set a single persisted DateTime property.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (ISIS-852) Derived property cannot be written properly

2014-08-13 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-852?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14096150#comment-14096150
 ] 

Jeroen van der Wal commented on ISIS-852:
-

You're right! According to the documentation it should be possible. In Estatio 
we have never gone this route. Probably Dan can elaborate on this.

 Derived property cannot be written properly
 ---

 Key: ISIS-852
 URL: https://issues.apache.org/jira/browse/ISIS-852
 Project: Isis
  Issue Type: Bug
  Components: Viewer: Wicket
Affects Versions: viewer-wicket-1.6.0
Reporter: Thomas Koren
Assignee: Dan Haywood

 when using the proposed modifyXxx syntax to make a derived property writable, 
 it is rendered as disabled in wicket viewer.
 {code:title=demo|borderStyle=solid}
 public LocalDate getDerivedDate() { ... }
 public void modifyDerivedDate(final LocalDate date) { ... }
 {code}
 when using the alternative setXxx syntax, the UI component is writable. but 
 in this case, the value of the derived property is not written to the 
 persisted property.
 {code:title=demo|borderStyle=solid}
 // {{ BeginAt (property)
 @javax.jdo.annotations.Persistent
 private DateTime beginAt;
 @Disabled
 @javax.jdo.annotations.Column(allowsNull = false)
 public DateTime getBeginAt() {
 return beginAt;
 }
 public void setBeginAt(final DateTime beginAt) {
 this.beginAt = beginAt;
 }
 // }}
 // {{ DerivedDate (property)
 @NotPersisted
 @NotPersistent
 public LocalDate getDerivedDate() {
 return getBeginAt().toLocalDate();
 }
 public void setDerivedDate(final LocalDate beginDate) {
 setBeginAt(getBeginAt().withDate(beginDate.getYear(), 
 beginDate.getMonthOfYear(), beginDate.getDayOfMonth()));
 }
 // }}
 {code}
 it seems like the value set by the derived property gets overwritten by the 
 original/old value of the persisted property that is displayed in the wicket 
 component.
 therefore it might only be an issue, if original and derived properties are 
 members of the same entity and displayed via wicket viewer.
 some background:
 i try to use 3 ui components  (= derived properties: date, hour, minute) to 
 set a single persisted DateTime property.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Created] (ISIS-850) Target field in IsisCommand is to small to save actions on viewmodels

2014-08-05 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-850:
---

 Summary: Target field in IsisCommand is to small to save actions 
on viewmodels
 Key: ISIS-850
 URL: https://issues.apache.org/jira/browse/ISIS-850
 Project: Isis
  Issue Type: Bug
  Components: Modules
Affects Versions: core-1.6.0
Reporter: Jeroen van der Wal
Assignee: Jeroen van der Wal


When executing an action on a viewmodel the target contains the full memento so 
it will exceed the 255 characters of the column in the IsisCommand table.

Need to investigate further what the maximum column length should be and decide 
to either extend or change to Clob/Text



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Reopened] (ISIS-825) Wicket viewer, auto-focus on first field on action parameter not working

2014-07-23 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-825?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal reopened ISIS-825:
-


This fix breaks actions containing a BigDecimal resulting in this error: 
java.lang.IllegalArgumentException cannot update component that does not have 
setOutputMarkupId property set to true. Component: [BigDecimalTextField 
[Component id = scalarIfCompact]]

Full stacktrace:
{code}
Stack trace:
org.apache.wicket.WicketRuntimeException
Method onRequest of interface org.apache.wicket.behavior.IBehaviorListener 
targeted at org.apache.wicket.ajax.markup.html.AjaxLink$1@46a46a0b on component 
[AjaxLink [Component id = additionalLink]] threw an exception
org.apache.wicket.RequestListenerInterface#internalInvoke(RequestListenerInterface.java:268)
org.apache.wicket.RequestListenerInterface#invoke(RequestListenerInterface.java:241)
org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler#invokeListener(ListenerInterfaceRequestHandler.java:250)
org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler#respond(ListenerInterfaceRequestHandler.java:236)
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:862)
org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:64)
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.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:210)
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.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:210)
org.apache.catalina.core.StandardWrapperValve#invoke(StandardWrapperValve.java:225)
org.apache.catalina.core.StandardContextValve#invoke(StandardContextValve.java:123)
org.apache.catalina.authenticator.AuthenticatorBase#invoke(AuthenticatorBase.java:472)
org.apache.catalina.core.StandardHostValve#invoke(StandardHostValve.java:168)
org.apache.catalina.valves.ErrorReportValve#invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve#invoke(AccessLogValve.java:927)
org.apache.catalina.core.StandardEngineValve#invoke(StandardEngineValve.java:118)
org.apache.catalina.connector.CoyoteAdapter#service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor#process(AbstractHttp11Processor.java:1001)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler#process(AbstractProtocol.java:579)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor#run(JIoEndpoint.java:310)
java.util.concurrent.ThreadPoolExecutor#runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker#run(ThreadPoolExecutor.java:615)
java.lang.Thread#run(Thread.java:724)
java.lang.reflect.InvocationTargetException
sun.reflect.NativeMethodAccessorImpl#invoke0(NativeMethodAccessorImpl.java:-2)
sun.reflect.NativeMethodAccessorImpl#invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl#invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method#invoke(Method.java:606)
org.apache.wicket.RequestListenerInterface#internalInvoke(RequestListenerInterface.java:258)
org.apache.wicket.RequestListenerInterface#invoke(RequestListenerInterface.java:241)
org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler#invokeListener(ListenerInterfaceRequestHandler.java:250)
org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler#respond(ListenerInterfaceRequestHandler.java:236)
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:862)
org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:64)
org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:261)

[jira] [Commented] (ISIS-825) Wicket viewer, auto-focus on first field on action parameter not working

2014-07-23 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-825?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14071671#comment-14071671
 ] 

Jeroen van der Wal commented on ISIS-825:
-

I think we should not go forward with 1.6.0-RC2 since the improvement causes a 
bigger regression.

 Wicket viewer, auto-focus on first field on action parameter not working
 

 Key: ISIS-825
 URL: https://issues.apache.org/jira/browse/ISIS-825
 Project: Isis
  Issue Type: Improvement
  Components: Viewer: Wicket
Affects Versions: viewer-wicket-1.5.0
 Environment: Windows 8.1, Chrome/IE 11
Reporter: Markus Bozem
Assignee: Dan Haywood
 Fix For: viewer-wicket-1.7.0


 Autofocus ist not set on first field on action (modal dialog).
 See ISIS-527.
 Auto-focus is working on edit object.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (ISIS-573) To improve performance, set up caching of query results against any entities that are immutable (ie ref data, ie have ImmutableFacet on them).

2014-07-17 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-573?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14065625#comment-14065625
 ] 

Jeroen van der Wal commented on ISIS-573:
-

We currently use (or misuse) @Immutable it disable all members of a class. 
Adding caching to the facet would harm the behavior of our applications. 
Implementing @Disabled on a class level would provide an alternative for us. 
See: ISIS-454 

 To improve performance, set up caching of query results against any entities 
 that are immutable (ie ref data, ie have ImmutableFacet on them).
 --

 Key: ISIS-573
 URL: https://issues.apache.org/jira/browse/ISIS-573
 Project: Isis
  Issue Type: New Feature
  Components: Core, Core: Objectstore: JDO
Affects Versions: objectstore-jdo-1.1.0, core-1.2.0
Reporter: Dan Haywood
Assignee: Dan Haywood
 Fix For: core-1.7.0


 In DN, this is done using:
 query.addExtension(datanucleus.query.results.cached, true);
 query.addExtension(datanucleus.query.resultCache.validateObjects, false);
 So, need to figure out how to set up these properties on queries by 
 repositories of immutable facets.   But this could probably be done 
 transparently.
 NB: for these cache results to hang around and not get garbage collected, 
 would also need to set the global config parm:
 datanucleus.cache.queryResult.type=strong
 ... its default value is weak.
 Further info at: 
 http://www.datanucleus.org/products/datanucleus/jdo/query_cache.html#datastoreCompilation



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Comment Edited] (ISIS-573) To improve performance, set up caching of query results against any entities that are immutable (ie ref data, ie have ImmutableFacet on them).

2014-07-17 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-573?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14065625#comment-14065625
 ] 

Jeroen van der Wal edited comment on ISIS-573 at 7/17/14 9:54 PM:
--

We currently use (or misuse) @Immutable to disable all members of a class. 
Adding caching logic to the facet would harm the behavior of our applications. 
Implementing @Disabled on a class level would provide us with an option to 
abandon the current misuse of @Immutable. 
See also ISIS-454 


was (Author: jcvanderwal):
We currently use (or misuse) @Immutable it disable all members of a class. 
Adding caching to the facet would harm the behavior of our applications. 
Implementing @Disabled on a class level would provide an alternative for us. 
See: ISIS-454 

 To improve performance, set up caching of query results against any entities 
 that are immutable (ie ref data, ie have ImmutableFacet on them).
 --

 Key: ISIS-573
 URL: https://issues.apache.org/jira/browse/ISIS-573
 Project: Isis
  Issue Type: New Feature
  Components: Core, Core: Objectstore: JDO
Affects Versions: objectstore-jdo-1.1.0, core-1.2.0
Reporter: Dan Haywood
Assignee: Dan Haywood
 Fix For: core-1.7.0


 In DN, this is done using:
 query.addExtension(datanucleus.query.results.cached, true);
 query.addExtension(datanucleus.query.resultCache.validateObjects, false);
 So, need to figure out how to set up these properties on queries by 
 repositories of immutable facets.   But this could probably be done 
 transparently.
 NB: for these cache results to hang around and not get garbage collected, 
 would also need to set the global config parm:
 datanucleus.cache.queryResult.type=strong
 ... its default value is weak.
 Further info at: 
 http://www.datanucleus.org/products/datanucleus/jdo/query_cache.html#datastoreCompilation



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Resolved] (ISIS-821) Precision gets lost when double values are use in BigDecimal attributes

2014-06-26 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-821?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal resolved ISIS-821.
-

Resolution: Fixed

 Precision gets lost when double values are use in BigDecimal attributes
 ---

 Key: ISIS-821
 URL: https://issues.apache.org/jira/browse/ISIS-821
 Project: Isis
  Issue Type: Bug
  Components: Viewer: RestfulObjects
Affects Versions: viewer-restfulobjects-2.3.0
Reporter: Jeroen van der Wal
Assignee: Jeroen van der Wal
 Fix For: viewer-restfulobjects-2.4.0


 The restful spec requires BigDecimal values to surrounded by quotes. When 
 doubles are being used the conversion to BigDecimal is incorrect. 



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (ISIS-801) Action method taking domain object paramater gets triggered automatically whenever instances of that object type is accessed

2014-06-11 Thread Jeroen van der Wal (JIRA)

[ 
https://issues.apache.org/jira/browse/ISIS-801?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14027744#comment-14027744
 ] 

Jeroen van der Wal commented on ISIS-801:
-

Have you put a breakpoint on the line with the persist, run in debug mode and 
confirmed that this line is called unexpectedly? If so, could you attach the 
stacktrace?

 Action method taking domain object paramater gets triggered automatically 
 whenever instances of that object type is accessed
 

 Key: ISIS-801
 URL: https://issues.apache.org/jira/browse/ISIS-801
 Project: Isis
  Issue Type: Bug
Reporter: Ranganath Chittari
Assignee: Dan Haywood
Priority: Critical

 I have application security service which creates permission to manage 
 particular entity(OmSite). Its action method is:
 @Bookmarkable
 @MemberOrder(sequence = 9)
 @Named(Create Site Permission)
 public OmPermission createSitePermission(final @Named(Choose a site) 
 OmSite site) {
 final OmPermission obj = newTransientInstance(OmPermission.class);
 obj.setPermission(SecurityUtil.formatSitePermission(site.getOrgId(), 
 site.getSiteId()));
 obj.setSite(site);
 persistIfNotAlready(obj);
 return obj;
 }
 As you can see this method takes OmSite instance to create a permission to 
 that instance. And OmPermission has foreign key to OmSite. This action is 
 displayed in service menu and its working fine.
 But the problem I am facing is when I access the list of OmSite objects in 
 other UI pages.  This action method is getting triggered automatically and 
 inserts bulk OmPermissions for all those ListOmSite objects.
 This action method createSitePermission should be invoked only if it is 
 clicked manually, but it gets triggered automatically whenever OmSite is 
 accesed in some other places.
 For ex:
 an action that returns a list of these OmSite, 
 when OmSite is in a collection of some other entity,
 When new OmSite is created.
 Workaround for this issue is annotate @NotContributed  to that action method, 
 it will prevent from invoking this method whenever its parameter instance is 
 accessed.
 BR
 Ranganath Varma
 Could you please look into this issue.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Created] (ISIS-765) Allow UserMemento#hasRole to match on wildcards

2014-04-08 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-765:
---

 Summary: Allow UserMemento#hasRole to match on wildcards
 Key: ISIS-765
 URL: https://issues.apache.org/jira/browse/ISIS-765
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: core-1.4.0
Reporter: Jeroen van der Wal
Assignee: Jeroen van der Wal
Priority: Minor
 Fix For: core-1.4.2


The roles the user has are prefixed by the realm they they were defined in. In 
orderer to make role matching across realms easier I suggest to use regex 
matching.

Example:
*user_role matches both ldapRealm:user_role and localRealm:user_role



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Resolved] (ISIS-765) Allow UserMemento#hasRole to match on wildcards

2014-04-08 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-765?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal resolved ISIS-765.
-

Resolution: Fixed

 Allow UserMemento#hasRole to match on wildcards
 ---

 Key: ISIS-765
 URL: https://issues.apache.org/jira/browse/ISIS-765
 Project: Isis
  Issue Type: Improvement
  Components: Core
Affects Versions: core-1.4.0
Reporter: Jeroen van der Wal
Assignee: Jeroen van der Wal
Priority: Minor
 Fix For: core-1.4.2


 The roles the user has are prefixed by the realm they they were defined in. 
 In orderer to make role matching across realms easier I suggest to use regex 
 matching.
 Example:
 *user_role matches both ldapRealm:user_role and localRealm:user_role



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Created] (ISIS-758) Auditing should be able to cope with a change to a property where the referenced object has been deleted.

2014-04-02 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-758:
---

 Summary: Auditing should be able to cope with a change to a 
property where the referenced object has been deleted.
 Key: ISIS-758
 URL: https://issues.apache.org/jira/browse/ISIS-758
 Project: Isis
  Issue Type: Bug
  Components: Core
Affects Versions: core-1.4.0
Reporter: Jeroen van der Wal
Assignee: Dan Haywood
 Fix For: core-1.4.2


For example, doing a cascade delete of Parent -* Child.

Here, the Parent and each of the Children will be audited, and in the case of 
Child, its parent reference is changing from (parent) to null.  

However, as the parent itself is deleted, trying to generate its toString() 
(when using JDO object store) is causing an exception.

The fix is to grab the toString of the object when the objects are enlisted 
into the transaction, before they are deleted.





--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Created] (ISIS-760) IllegalStateException when commands/audit enabled in Estatio and failing to persist the Oid of a view model.

2014-04-02 Thread Jeroen van der Wal (JIRA)
Jeroen van der Wal created ISIS-760:
---

 Summary: IllegalStateException when commands/audit enabled in 
Estatio and failing to persist the Oid of a view model.
 Key: ISIS-760
 URL: https://issues.apache.org/jira/browse/ISIS-760
 Project: Isis
  Issue Type: Bug
Reporter: Jeroen van der Wal
Assignee: Dan Haywood
Priority: Critical


There are two separate issues here:
- first is that the auditing service's column for storing OIDs isn't long 
enough for view models.
- the second is that, given this then causes the xactn to be aborted, that it 
throws an IllegalStateException for any subsequent interaction with the system. 
 The only fix is to restart the server.  See details below

The reason for the second issue is that the previous session does not close 
correctly.  This is because of an exception being thrown in 
PersistenceSession#close:

PersistenceSession.completeCommandIfConfigured() line: 418  
PersistenceSession.closeServices() line: 399
PersistenceSession.close() line: 372
IsisSessionDefault.close() line: 119
IsisContextThreadLocal(IsisContext).closeSessionInstance() line: 219
WebRequestCycleForIsis.onEndRequest(RequestCycle) line: 134 

This in turn is because of an attempt to complete any pending command (per the 
CommandJdo service) on a xactn that has already been aborted.

The fix, I think, is simple enough; add a guard...

private void completeCommandIfConfigured() {
// NEW CODE START
if(getTransactionManager().getTransaction().getState().isComplete()) {
// can't do anything, since already complete (possibly aborted)
return;
}
// NEW CODE END
final CommandContext commandContext = 
getServiceOrNull(CommandContext.class);
if(commandContext != null) {
final CommandService commandService = 
getServiceOrNull(CommandService.class);
if(commandService != null) {
final Command command = commandContext.getCommand();
commandService.complete(command);
}
}
}

~~
to reproduce:
with estatio demo data

 find invoices for status new
 choose oxford
 approve all.


A server restart was required.

{code}
java.lang.IllegalStateException
Session already open and context not configured for autoclose
 
org.apache.isis.core.runtime.system.context.IsisContext#applySessionClosePolicy(IsisContext.java:186)
 
org.apache.isis.core.runtime.system.context.IsisContextThreadLocal#openSessionInstance(IsisContextThreadLocal.java:148)
 
org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis#onBeginRequest(WebRequestCycleForIsis.java:81)
 
org.apache.wicket.request.cycle.RequestCycleListenerCollection$1#notify(RequestCycleListenerCollection.java:65)
 
org.apache.wicket.request.cycle.RequestCycleListenerCollection$1#notify(RequestCycleListenerCollection.java:61)
 
org.apache.wicket.util.listener.ListenerCollection#notify(ListenerCollection.java:80)
 
org.apache.wicket.request.cycle.RequestCycleListenerCollection#onBeginRequest(RequestCycleListenerCollection.java:60)
 
org.apache.wicket.request.cycle.RequestCycleListenerCollection$1#notify(RequestCycleListenerCollection.java:65)
 
org.apache.wicket.request.cycle.RequestCycleListenerCollection$1#notify(RequestCycleListenerCollection.java:61)
 
org.apache.wicket.util.listener.ListenerCollection#notify(ListenerCollection.java:80)
 
org.apache.wicket.request.cycle.RequestCycleListenerCollection#onBeginRequest(RequestCycleListenerCollection.java:60)
 
org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:213)
 
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.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:243)
 
org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:210)
 
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)
 

[jira] [Updated] (ISIS-760) IllegalStateException when commands/audit enabled in Estatio and failing to persist the Oid of a view model.

2014-04-02 Thread Jeroen van der Wal (JIRA)

 [ 
https://issues.apache.org/jira/browse/ISIS-760?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen van der Wal updated ISIS-760:


Description: 
There are two separate issues here:
- first is that the auditing service's column for storing OIDs isn't long 
enough for view models.
- the second is that, given this then causes the xactn to be aborted, that it 
throws an IllegalStateException for any subsequent interaction with the system. 
 The only fix is to restart the server.  See details below

The reason for the second issue is that the previous session does not close 
correctly.  This is because of an exception being thrown in 
PersistenceSession#close:

PersistenceSession.completeCommandIfConfigured() line: 418  
PersistenceSession.closeServices() line: 399
PersistenceSession.close() line: 372
IsisSessionDefault.close() line: 119
IsisContextThreadLocal(IsisContext).closeSessionInstance() line: 219
WebRequestCycleForIsis.onEndRequest(RequestCycle) line: 134 

This in turn is because of an attempt to complete any pending command (per the 
CommandJdo service) on a xactn that has already been aborted

private void completeCommandIfConfigured() {
final CommandContext commandContext = 
getServiceOrNull(CommandContext.class);
if(commandContext != null) {
final CommandService commandService = 
getServiceOrNull(CommandService.class);
if(commandService != null) {
final Command command = commandContext.getCommand();
commandService.complete(command);
}
}
}

So, when closing the session, need to take this into account.  Should propogate 
exception if any arises, but still ensure that the persistence session is 
closed for next-time around.

~~
to reproduce:
with estatio demo data

 find invoices for status new
 choose oxford
 approve all.


A server restart was required.

{code}
java.lang.IllegalStateException
Session already open and context not configured for autoclose
 
org.apache.isis.core.runtime.system.context.IsisContext#applySessionClosePolicy(IsisContext.java:186)
 
org.apache.isis.core.runtime.system.context.IsisContextThreadLocal#openSessionInstance(IsisContextThreadLocal.java:148)
 
org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis#onBeginRequest(WebRequestCycleForIsis.java:81)
 
org.apache.wicket.request.cycle.RequestCycleListenerCollection$1#notify(RequestCycleListenerCollection.java:65)
 
org.apache.wicket.request.cycle.RequestCycleListenerCollection$1#notify(RequestCycleListenerCollection.java:61)
 
org.apache.wicket.util.listener.ListenerCollection#notify(ListenerCollection.java:80)
 
org.apache.wicket.request.cycle.RequestCycleListenerCollection#onBeginRequest(RequestCycleListenerCollection.java:60)
 
org.apache.wicket.request.cycle.RequestCycleListenerCollection$1#notify(RequestCycleListenerCollection.java:65)
 
org.apache.wicket.request.cycle.RequestCycleListenerCollection$1#notify(RequestCycleListenerCollection.java:61)
 
org.apache.wicket.util.listener.ListenerCollection#notify(ListenerCollection.java:80)
 
org.apache.wicket.request.cycle.RequestCycleListenerCollection#onBeginRequest(RequestCycleListenerCollection.java:60)
 
org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:213)
 
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.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:243)
 
org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:210)
 
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.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:243)
 
org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:210)
 
org.apache.catalina.core.StandardWrapperValve#invoke(StandardWrapperValve.java:225)
 
org.apache.catalina.core.StandardContextValve#invoke(StandardContextValve.java:123)
 

  1   2   >