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

ASF subversion and git services commented on ISIS-1874:
-------------------------------------------------------

Commit 6adc5edc98a489521d40f24a8ecf8bd014900398 in isis's branch 
refs/heads/maint-1.16.2 from [~danhaywood]
[ https://gitbox.apache.org/repos/asf?p=isis.git;h=6adc5ed ]

ISIS-1874: adds guard against NPE, and ensures choices facet not installed on 
incompatible parameters


> Parented checkboxes fails - NPEs and incorrect facets.
> ------------------------------------------------------
>
>                 Key: ISIS-1874
>                 URL: https://issues.apache.org/jira/browse/ISIS-1874
>             Project: Isis
>          Issue Type: Bug
>    Affects Versions: 1.16.1
>            Reporter: Dan Haywood
>            Assignee: Dan Haywood
>            Priority: Blocker
>             Fix For: 1.16.2
>
>         Attachments: 1-a.png, 1-b.png, 2-a.png, 2-b.png
>
>
> Two separate issues:
>  # NPE for a parented collection with no toggle box column (the 
> AssociatedWithProvider is always created, but may return a null toggle box 
> column; this isn't guarded for.
>  # When a choices facet is installed for a parameter, doesn't check the type 
> of the parameter against the collection, meaning cannot invoke action.
> Workaround: disable the "associateWith" or memberOrder
> Example of (1) - fails with NPE (though action is executed)
> {code:java}
> @Getter @Setter
> private SortedSet<Occupancy> occupancies = new TreeSet<>();
> // associated via .layout.xml
> public Occupancy newOccupancy(
>         final @Parameter(optionality = Optionality.OPTIONAL) LocalDate 
> startDate,
>         final Unit unit) {
>     Occupancy occupancy = occupancyRepository.newOccupancy(this, unit, 
> startDate);
>     occupancies.add(occupancy);
>     return occupancy;
> }
> public LocalDate default0NewOccupancy() {
>     return getTenancyStartDate();
> }
> public List<Unit> choices1NewOccupancy() {
>     return getProperty()!=null ? unitRepository.findByProperty(getProperty()) 
> : unitRepository.allUnits();
> }
> {code}
>  
> Example of (2) - fails with AgreementRole incompatible with Party.  
> Workaround is to ensure there's an explicit autoComplete or choices
> {code:java}
> @javax.jdo.annotations.Persistent(mappedBy = "agreement", defaultFetchGroup = 
> "true")
> @Collection(editing = Editing.DISABLED)
> @CollectionLayout(render = RenderType.EAGERLY)
> @Getter @Setter
> private SortedSet<AgreementRole> roles = new TreeSet<>();
> @MemberOrder(name = "roles", sequence = "1")
> public Agreement newRole(
>         final AgreementRoleType type,
>         final Party party,
>         final @Parameter(optionality = Optionality.OPTIONAL) LocalDate 
> startDate,
>         final @Parameter(optionality = Optionality.OPTIONAL) LocalDate 
> endDate) {
>     createRole(type, party, startDate, endDate);
>     return this;
> }
> public List<AgreementRoleType> choices0NewRole() {
>     return agreementRoleTypeRepository.findApplicableTo(getType());
> }
> public LocalDate default2NewRole() {
>     return getEffectiveInterval().startDate();
> }
> public LocalDate default3NewRole() {
>     return getEffectiveInterval().endDate();
> }
> {code}
> ^^^ the problem triggers on Party, not on AgreementRoleType, because the 
> latter has an explicit choices method.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to