You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Jeroen van der Wal (JIRA)" <ji...@apache.org> on 2014/08/13 21:30:12 UTC
[jira] [Commented] (ISIS-852) Derived property cannot be written
properly
[ https://issues.apache.org/jira/browse/ISIS-852?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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)