You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Dan Haywood (JIRA)" <ji...@apache.org> on 2013/12/05 18:18:36 UTC

[jira] [Created] (ISIS-624) New @Decimal annotation to specify length and scale for BigDecimal action parameters (to avoid JDO exceptions later).

Dan Haywood created ISIS-624:
--------------------------------

             Summary: New @Decimal annotation to specify length and scale for BigDecimal action parameters (to avoid JDO exceptions later).
                 Key: ISIS-624
                 URL: https://issues.apache.org/jira/browse/ISIS-624
             Project: Isis
          Issue Type: New Feature
          Components: Core
    Affects Versions: core-1.3.0
            Reporter: Dan Haywood
            Assignee: Dan Haywood
            Priority: Minor
             Fix For: core-1.4.0


Using the JDO @Column annotation the length/scale of properties can be specified.  However, there is no capability to capture these semantics for action parameters (and the @Column annotation cannot be specified for parameters, even if we thought that were a good idea).

With no semantics, Isis currently infers the scale of a BigDecimal from the entered input.  For example, entering "123.45" will parse to a BD with scale of 2, entering "123.4567" will parse to a BD with scale of 4.

The problem, then, is that if a BD with too large a scale is assigned to a property with a lower scale, then JDO will throw an exception.

So this ticket is to introduce a new annotation, @Decimal, allowing the appropriate semantic to be enforced:

public class ToDoItem

    @javax.jdo.annotations.Column(length=10, scale=2)
    private Cost cost;

    public void updateCost(@Decimal(10,2) BigDecimal newCost) {
       setCost(cost);
    }
}

~~~~
In addition, it should be possible to add this annotation to properties too.  If there is a mismatch between JDO and the Isis annotaitons, then a metamodel validation exception should be thrown.




--
This message was sent by Atlassian JIRA
(v6.1#6144)