[ https://issues.apache.org/jira/browse/ISIS-1695?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Keir Haywood updated ISIS-1695: -------------------------------------- Component/s: Isis Viewer Wicket Isis ValueTypes Isis Core Fix Version/s: (was: 2.0.0-M4) > Support value types (simple ones at least) as a first-class citizen > ------------------------------------------------------------------- > > Key: ISIS-1695 > URL: https://issues.apache.org/jira/browse/ISIS-1695 > Project: Isis > Issue Type: New Feature > Components: Isis Core, Isis ValueTypes, Isis Viewer Wicket > Reporter: Daniel Keir Haywood > Priority: Minor > > I would like to reintroduce value types as a first-class citizen, but without > requiring the developer to have to write lots of code to teach DataNucleus, > Wicket and the RO viewer about these. > I don't have a general solution in mind on how to do this. > However, for very simple value types that are just a type-safe wrapper around > a single field (eg Password, or Money, or Temperature, or Email say), then > perhaps there might be a way to support this, eg : > public class Temperature implements > org.apache.isis.valuetypes.Value<BigDecimal> { > public Temperature(BigDecimal value) \{ ... } > BigDecimal getValue() \{ ... } > } > > or > > @Value(underlying=BigDecimal.class) > public class Temperature \{ ... } > The idea here is that the framework would treat any instance of this custom > value type as if it were the underlying type (BigDecimal in the case above). > It would also be possible to apply validations to the value type that would > apply everywhere it is used as a property/parameter. > > We would expect these value types to be immutable, and (although this can't > be expressed in an interface), would expect there to be a public 1-arg > constructor of the appropriate type, and a package-local "getValue()" method. > These allow the framework to marshal values in and out of the value type. > > -- This message was sent by Atlassian Jira (v8.3.4#803005)