[ 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)