You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2014/04/25 19:33:23 UTC

git commit: ISIS-421: RO TCK tests, bigdecimal/integer format

Repository: isis
Updated Branches:
  refs/heads/master 094379501 -> 42f33f6a2


ISIS-421: RO TCK tests, bigdecimal/integer format

Render format as "big-decimal(p,s)" according to BigDecimalValueFacet.  Render "big-integer(18)" for big integers (hard-coded).


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/42f33f6a
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/42f33f6a
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/42f33f6a

Branch: refs/heads/master
Commit: 42f33f6a21a29c16ca3f50b6cc373af81fe923b4
Parents: 0943795
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Apr 25 18:33:10 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Apr 25 18:33:10 2014 +0100

----------------------------------------------------------------------
 .../BigDecimalFacetDerivedFromJdoColumn.java    | 10 ++---
 .../prop/column/BigDecimalFacetFallback.java    |  6 +--
 .../domainobjects/JsonValueEncoder.java         |  6 +--
 .../ObjectPropertyReprRenderer.java             | 36 ++++++++++++++++-
 ...WithJdkProperties_thenRepresentation_ok.java | 10 ++---
 ...henArgsValid_thenMultiplePropertyUpdate.java |  4 +-
 ...Put_whenArgValid_thenPropertyUpdated_ok.java |  4 +-
 ...eterFromJavaxValidationDigitsAnnotation.java | 14 +++----
 ...ertyFromJavaxValidationDigitsAnnotation.java | 14 +++----
 .../value/bigdecimal/BigDecimalValueFacet.java  | 12 +++++-
 .../BigDecimalValueFacetAbstract.java           | 42 ++++++++++++++++++++
 .../BigDecimalValueSemanticsProvider.java       |  8 +++-
 .../core/tck/dom/scalars/JdkValuedEntity.java   |  3 +-
 .../fixture/scalars/JdkValuedEntityFixture.java |  2 +-
 14 files changed, 130 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/42f33f6a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalFacetDerivedFromJdoColumn.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalFacetDerivedFromJdoColumn.java b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalFacetDerivedFromJdoColumn.java
index 9884ce3..5143852 100644
--- a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalFacetDerivedFromJdoColumn.java
+++ b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalFacetDerivedFromJdoColumn.java
@@ -19,12 +19,12 @@
 package org.apache.isis.objectstore.jdo.metamodel.facets.prop.column;
 
 import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.progmodel.facets.value.bigdecimal.BigDecimalValueFacet;
+import org.apache.isis.core.progmodel.facets.value.bigdecimal.BigDecimalValueFacetAbstract;
 
 
-public class BigDecimalFacetDerivedFromJdoColumn extends FacetAbstract implements BigDecimalValueFacet {
+public class BigDecimalFacetDerivedFromJdoColumn extends BigDecimalValueFacetAbstract {
 
     private final Integer length;
     private final Integer scale;
@@ -33,14 +33,14 @@ public class BigDecimalFacetDerivedFromJdoColumn extends FacetAbstract implement
         return BigDecimalValueFacet.class;
     }
 
-    public BigDecimalFacetDerivedFromJdoColumn(final FacetHolder holder, final Integer length, final Integer scale) {
+    public BigDecimalFacetDerivedFromJdoColumn(final FacetHolder holder, final Integer precision, final Integer scale) {
         super(BigDecimalFacetDerivedFromJdoColumn.type(), holder, Derivation.NOT_DERIVED);
-        this.length = length;
+        this.length = precision;
         this.scale = scale;
     }
 
     @Override
-    public Integer getLength() {
+    public Integer getPrecision() {
         return length;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/42f33f6a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalFacetFallback.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalFacetFallback.java b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalFacetFallback.java
index 2e11b3e..45b57ba 100644
--- a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalFacetFallback.java
+++ b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalFacetFallback.java
@@ -19,13 +19,13 @@
 package org.apache.isis.objectstore.jdo.metamodel.facets.prop.column;
 
 import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.progmodel.facets.value.bigdecimal.BigDecimalValueFacet;
+import org.apache.isis.core.progmodel.facets.value.bigdecimal.BigDecimalValueFacetAbstract;
 import org.apache.isis.core.progmodel.facets.value.bigdecimal.BigDecimalValueSemanticsProvider;
 
 
-public class BigDecimalFacetFallback extends FacetAbstract implements BigDecimalValueFacet {
+public class BigDecimalFacetFallback extends BigDecimalValueFacetAbstract {
 
     public static Class<? extends Facet> type() {
         return BigDecimalValueFacet.class;
@@ -36,7 +36,7 @@ public class BigDecimalFacetFallback extends FacetAbstract implements BigDecimal
     }
 
     @Override
-    public Integer getLength() {
+    public Integer getPrecision() {
         return BigDecimalValueSemanticsProvider.DEFAULT_LENGTH;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/42f33f6a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
index 2afd9cd..d5530a3 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
@@ -365,7 +365,7 @@ public final class JsonValueEncoder {
             }
         });
         
-        putConverter(new JsonValueConverter("big-integer", "javamathbiginteger", BigInteger.class){
+        putConverter(new JsonValueConverter("big-integer(18)", "javamathbiginteger", BigInteger.class){
             @Override
             public ObjectAdapter asAdapter(JsonRepresentation repr, String format) {
                 if (repr.isString()) {
@@ -430,7 +430,7 @@ public final class JsonValueEncoder {
                 } else {
                     repr.mapPut("value", obj);
                 }
-                appendFormats(repr, format != null? format: this.format, xIsisFormat);
+                appendFormats(repr, format != null ? format : this.format, xIsisFormat);
             }
         });
 
@@ -522,7 +522,7 @@ public final class JsonValueEncoder {
                     ISODateTimeFormat.basicDateTimeNoMillis().withZoneUTC(),
                     ISODateTimeFormat.basicDateTime().withZoneUTC(),
                     JsonRepresentation.yyyyMMddTHHmmssZ.withZoneUTC()
-                    );
+            );
             
             @Override
             public ObjectAdapter asAdapter(JsonRepresentation repr, String format) {

http://git-wip-us.apache.org/repos/asf/isis/blob/42f33f6a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
index 37a123b..02a32de 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
@@ -23,11 +23,15 @@ import org.codehaus.jackson.node.NullNode;
 import org.apache.isis.applib.annotation.Render.Type;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.maxlen.MaxLengthFacet;
 import org.apache.isis.core.metamodel.facets.members.resolve.RenderFacet;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.core.progmodel.facets.value.bigdecimal.BigDecimalValueFacet;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.Rel;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
@@ -70,7 +74,22 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
         
         final ValueFacet valueFacet = spec.getFacet(ValueFacet.class);
         if (valueFacet != null) {
-            String format = null; // TODO
+            String format = null;
+            final Class<?> specClass = spec.getCorrespondingClass();
+            if(specClass == java.math.BigDecimal.class) {
+                // look for facet on member, else on the value's spec
+                final BigDecimalValueFacet bigDecimalValueFacet =
+                        getFacet(BigDecimalValueFacet.class,
+                                objectMember,
+                                valueAdapter != null? valueAdapter.getSpecification(): null);
+                if(bigDecimalValueFacet != null) {
+                    final Integer precision = bigDecimalValueFacet.getPrecision();
+                    final Integer scale = bigDecimalValueFacet.getScale();
+                    format = String.format("big-decimal(%d,%d)", precision, scale);
+                }
+            } else if(specClass == java.math.BigInteger.class) {
+                // TODO: need to extend BigIntegerValueFacet similar to BigDecimalValueFacet
+            }
             JsonValueEncoder.appendValueAndFormat(spec, valueAdapter, representation, format);
             return;
         }
@@ -99,8 +118,21 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
         }
     }
 
+    private static <T extends Facet> T getFacet(Class<T> facetType, FacetHolder... holders) {
+        for (FacetHolder holder : holders) {
+            if(holder == null) {
+                continue;
+            }
+            final T facet = holder.getFacet(facetType);
+            if(facet != null) {
+                return facet;
+            }
+        }
+        return null;
+    }
+
+
 
-    
     // ///////////////////////////////////////////////////
     // details link
     // ///////////////////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/isis/blob/42f33f6a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithJdkProperties_thenRepresentation_ok.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithJdkProperties_thenRepresentation_ok.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithJdkProperties_thenRepresentation_ok.java
index 4ccf999..06384cf 100644
--- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithJdkProperties_thenRepresentation_ok.java
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithJdkProperties_thenRepresentation_ok.java
@@ -68,7 +68,7 @@ public class Get_givenEntityWithJdkProperties_thenRepresentation_ok {
 
         property = domainObjectRepr.getProperty("bigDecimalProperty");
         assertThat(property.getMemberType(), is("property"));
-        assertThat(property.getFormat(), is("big-decimal"));
+        assertThat(property.getFormat(), is("big-decimal(30,10)"));
         assertThat(property.getXIsisFormat(), is("javamathbigdecimal"));
         scalarRepr = property.getRepresentation("value").as(ScalarValueRepresentation.class);
         assertThat(scalarRepr.isString(), is(true));
@@ -77,7 +77,7 @@ public class Get_givenEntityWithJdkProperties_thenRepresentation_ok {
 
         property = domainObjectRepr.getProperty("bigDecimalProperty2");
         assertThat(property.getMemberType(), is("property"));
-        assertThat(property.getFormat(), is("big-decimal"));
+        assertThat(property.getFormat(), is("big-decimal(18,2)"));
         assertThat(property.getXIsisFormat(), is("javamathbigdecimal"));
         scalarRepr = property.getRepresentation("value").as(ScalarValueRepresentation.class);
         assertThat(scalarRepr.isString(), is(true));
@@ -86,16 +86,16 @@ public class Get_givenEntityWithJdkProperties_thenRepresentation_ok {
 
         property = domainObjectRepr.getProperty("bigIntegerProperty");
         assertThat(property.getMemberType(), is("property"));
-        assertThat(property.getFormat(), is("big-integer"));
+        assertThat(property.getFormat(), is("big-integer(18)"));
         assertThat(property.getXIsisFormat(), is("javamathbiginteger"));
         scalarRepr = property.getRepresentation("value").as(ScalarValueRepresentation.class);
         assertThat(scalarRepr.isString(), is(true));
         BigInteger bigInteger = scalarRepr.asBigInteger(property.getFormat());
-        assertThat(bigInteger, is(new BigInteger("12345678901234567890")));
+        assertThat(bigInteger, is(new BigInteger("123456789012345678")));
 
         property = domainObjectRepr.getProperty("bigIntegerProperty2");
         assertThat(property.getMemberType(), is("property"));
-        assertThat(property.getFormat(), is("big-integer"));
+        assertThat(property.getFormat(), is("big-integer(18)"));
         scalarRepr = property.getRepresentation("value").as(ScalarValueRepresentation.class);
         assertThat(scalarRepr.isString(), is(true));
         BigInteger bigInteger2 = scalarRepr.asBigInteger(property.getFormat());

http://git-wip-us.apache.org/repos/asf/isis/blob/42f33f6a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Put_whenArgsValid_thenMultiplePropertyUpdate.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Put_whenArgsValid_thenMultiplePropertyUpdate.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Put_whenArgsValid_thenMultiplePropertyUpdate.java
index 5886833..3643a8e 100644
--- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Put_whenArgsValid_thenMultiplePropertyUpdate.java
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Put_whenArgsValid_thenMultiplePropertyUpdate.java
@@ -120,7 +120,7 @@ public class Put_whenArgsValid_thenMultiplePropertyUpdate {
         final JsonRepresentation argRepr = updateLink.getArguments();
 
         final BigDecimal bd = new BigDecimal("12345678901234567.789");
-        final BigInteger bi = new BigInteger("12345678901234567890");
+        final BigInteger bi = new BigInteger("123456789012345678");
         final java.sql.Date sqld = new java.sql.Date(new DateTime(2014,5,1, 0,0, DateTimeZone.UTC).getMillis());
         final java.sql.Time sqlt = new java.sql.Time(13,0,0);
         final java.sql.Timestamp sqlts = new java.sql.Timestamp(114,4,1,13,0,0,0);
@@ -142,7 +142,7 @@ public class Put_whenArgsValid_thenMultiplePropertyUpdate {
         
         final DomainObjectRepresentation afterResp = result.getEntity().as(DomainObjectRepresentation.class);
         
-        assertThat(afterResp.getProperty("bigDecimalProperty").getBigDecimal("value"), is(new BigDecimal("12345678901234567.789")));
+        assertThat(afterResp.getProperty("bigDecimalProperty").getBigDecimal("value"), is(new BigDecimal("12345678901234567.7890000000"))); // big-decimal(30,10)
         assertThat(afterResp.getProperty("bigIntegerProperty").getBigInteger("value"), is(bi));
         assertThat(afterResp.getProperty("javaSqlDateProperty").getDate("value"), is((java.util.Date)sqld));
         assertThat(afterResp.getProperty("javaSqlTimeProperty").getTime("value"), is((java.util.Date)sqlt));

http://git-wip-us.apache.org/repos/asf/isis/blob/42f33f6a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Put_whenArgValid_thenPropertyUpdated_ok.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Put_whenArgValid_thenPropertyUpdated_ok.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Put_whenArgValid_thenPropertyUpdated_ok.java
index ebd5cbf..a24c2e3 100644
--- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Put_whenArgValid_thenPropertyUpdated_ok.java
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Put_whenArgValid_thenPropertyUpdated_ok.java
@@ -135,10 +135,10 @@ public class Put_whenArgValid_thenPropertyUpdated_ok {
         final BigDecimal bd = new BigDecimal("12345678901234567.789");
         modifyLink = getObjectPropertyReprModifyLink("JDKV", "29", "bigDecimalProperty");
         argRepr = modifyLink.getArguments().mapPut("value", bd);
-        assertThat(followedRepr(modifyLink,argRepr).getBigDecimal("value"), is(new BigDecimal("12345678901234567.789")));
+        assertThat(followedRepr(modifyLink,argRepr).getBigDecimal("value"), is(new BigDecimal("12345678901234567.7890000000"))); // big-decimal(30,10)
 
         // big integer
-        final BigInteger bi = new BigInteger("12345678901234567890");
+        final BigInteger bi = new BigInteger("123456789012345678");
         modifyLink = getObjectPropertyReprModifyLink("JDKV", "29", "bigIntegerProperty");
         argRepr = modifyLink.getArguments().mapPut("value", bi);
         assertThat(followedRepr(modifyLink,argRepr).getBigInteger("value"), is(bi));

http://git-wip-us.apache.org/repos/asf/isis/blob/42f33f6a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/param/javaxvaldigits/BigDecimalFacetForParameterFromJavaxValidationDigitsAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/param/javaxvaldigits/BigDecimalFacetForParameterFromJavaxValidationDigitsAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/param/javaxvaldigits/BigDecimalFacetForParameterFromJavaxValidationDigitsAnnotation.java
index d204c02..e90f2a4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/param/javaxvaldigits/BigDecimalFacetForParameterFromJavaxValidationDigitsAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/param/javaxvaldigits/BigDecimalFacetForParameterFromJavaxValidationDigitsAnnotation.java
@@ -19,28 +19,28 @@
 package org.apache.isis.core.progmodel.facets.param.javaxvaldigits;
 
 import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.progmodel.facets.value.bigdecimal.BigDecimalValueFacet;
+import org.apache.isis.core.progmodel.facets.value.bigdecimal.BigDecimalValueFacetAbstract;
 
-public class BigDecimalFacetForParameterFromJavaxValidationDigitsAnnotation extends FacetAbstract implements BigDecimalValueFacet {
+public class BigDecimalFacetForParameterFromJavaxValidationDigitsAnnotation extends BigDecimalValueFacetAbstract  {
 
-    private final Integer length;
+    private final Integer precision;
     private final Integer scale;
 
     public static Class<? extends Facet> type() {
         return BigDecimalValueFacet.class;
     }
 
-    public BigDecimalFacetForParameterFromJavaxValidationDigitsAnnotation(final FacetHolder holder, final Integer length, final Integer scale) {
+    public BigDecimalFacetForParameterFromJavaxValidationDigitsAnnotation(final FacetHolder holder, final Integer precision, final Integer scale) {
         super(BigDecimalFacetForParameterFromJavaxValidationDigitsAnnotation.type(), holder, Derivation.NOT_DERIVED);
-        this.length = length;
+        this.precision = precision;
         this.scale = scale;
     }
 
     @Override
-    public Integer getLength() {
-        return length;
+    public Integer getPrecision() {
+        return precision;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/42f33f6a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/properties/javaxvaldigits/BigDecimalFacetForPropertyFromJavaxValidationDigitsAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/properties/javaxvaldigits/BigDecimalFacetForPropertyFromJavaxValidationDigitsAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/properties/javaxvaldigits/BigDecimalFacetForPropertyFromJavaxValidationDigitsAnnotation.java
index 404a160..3b41783 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/properties/javaxvaldigits/BigDecimalFacetForPropertyFromJavaxValidationDigitsAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/properties/javaxvaldigits/BigDecimalFacetForPropertyFromJavaxValidationDigitsAnnotation.java
@@ -19,29 +19,29 @@
 package org.apache.isis.core.progmodel.facets.properties.javaxvaldigits;
 
 import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.progmodel.facets.value.bigdecimal.BigDecimalValueFacet;
+import org.apache.isis.core.progmodel.facets.value.bigdecimal.BigDecimalValueFacetAbstract;
 
 
-public class BigDecimalFacetForPropertyFromJavaxValidationDigitsAnnotation extends FacetAbstract implements BigDecimalValueFacet {
+public class BigDecimalFacetForPropertyFromJavaxValidationDigitsAnnotation extends BigDecimalValueFacetAbstract {
 
-    private final int length;
+    private final int precision;
     private final int scale;
 
     public static Class<? extends Facet> type() {
         return BigDecimalValueFacet.class;
     }
 
-    public BigDecimalFacetForPropertyFromJavaxValidationDigitsAnnotation(final FacetHolder holder, final Integer length, final Integer scale) {
+    public BigDecimalFacetForPropertyFromJavaxValidationDigitsAnnotation(final FacetHolder holder, final Integer precision, final Integer scale) {
         super(BigDecimalFacetForPropertyFromJavaxValidationDigitsAnnotation.type(), holder, Derivation.NOT_DERIVED);
-        this.length = length;
+        this.precision = precision;
         this.scale = scale;
     }
 
     @Override
-    public Integer getLength() {
-        return length;
+    public Integer getPrecision() {
+        return precision;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/42f33f6a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/bigdecimal/BigDecimalValueFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/bigdecimal/BigDecimalValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/bigdecimal/BigDecimalValueFacet.java
index 7388f7b..dc4c115 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/bigdecimal/BigDecimalValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/bigdecimal/BigDecimalValueFacet.java
@@ -24,7 +24,7 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
 public interface BigDecimalValueFacet extends Facet {
 
     /**
-     * Maximum length of digits for this decimal.
+     * Maximum length of digits for this decimal (in other words, its precision).
      * 
      * <p>
      * For example:
@@ -34,8 +34,16 @@ public interface BigDecimalValueFacet extends Facet {
      * <li><tt>12345.0</tt> has a length of 6 (and {@link #getScale() scale} of 1)</li>
      * </ul>
      */
+    Integer getPrecision();
+
+    /**
+     * Same as {@link #getPrecision()}.
+     *
+     * @deprecated
+     */
+    @Deprecated
     Integer getLength();
-    
+
     /**
      * The number of digits to the right of the decimal place (fractional part) for this decimal.
      * 

http://git-wip-us.apache.org/repos/asf/isis/blob/42f33f6a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/bigdecimal/BigDecimalValueFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/bigdecimal/BigDecimalValueFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/bigdecimal/BigDecimalValueFacetAbstract.java
new file mode 100644
index 0000000..cb459b5
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/bigdecimal/BigDecimalValueFacetAbstract.java
@@ -0,0 +1,42 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.core.progmodel.facets.value.bigdecimal;
+
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+
+public abstract class BigDecimalValueFacetAbstract extends FacetAbstract implements BigDecimalValueFacet {
+
+    public BigDecimalValueFacetAbstract(Class<? extends Facet> facetType, FacetHolder holder, Derivation derivation) {
+        super(facetType, holder, derivation);
+    }
+
+    @Override
+    public abstract Integer getPrecision();
+
+    @Override
+    public final Integer getLength() {
+        return getPrecision();
+    }
+
+    @Override
+    public abstract Integer getScale();
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/42f33f6a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/bigdecimal/BigDecimalValueSemanticsProvider.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/bigdecimal/BigDecimalValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/bigdecimal/BigDecimalValueSemanticsProvider.java
index a32875f..536226f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/bigdecimal/BigDecimalValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/bigdecimal/BigDecimalValueSemanticsProvider.java
@@ -69,9 +69,15 @@ public class BigDecimalValueSemanticsProvider extends ValueSemanticsProviderAndF
     // //////////////////////////////////////////////////////////////////
     // Parser
     // //////////////////////////////////////////////////////////////////
-    
+
+    @Deprecated
     @Override
     public Integer getLength() {
+        return getPrecision();
+    }
+
+    @Override
+    public Integer getPrecision() {
         return DEFAULT_LENGTH;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/42f33f6a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/JdkValuedEntity.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/JdkValuedEntity.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/JdkValuedEntity.java
index 2bcf4b5..43cd3fe 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/JdkValuedEntity.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/JdkValuedEntity.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.tck.dom.scalars;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.Date;
-
+import javax.validation.constraints.Digits;
 import org.apache.isis.applib.AbstractDomainObject;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.ObjectType;
@@ -151,6 +151,7 @@ public class JdkValuedEntity extends AbstractDomainObject {
     // {{ BigDecimalProperty (to hold values that are larger than a double)
     private BigDecimal bigDecimalProperty;
 
+    @Digits(integer=20,fraction = 10) // corresponds to big-decimal(30,10)
     @Optional
     @MemberOrder(sequence = "1")
     public BigDecimal getBigDecimalProperty() {

http://git-wip-us.apache.org/repos/asf/isis/blob/42f33f6a/core/tck/tck-fixture/src/main/java/org/apache/isis/core/tck/fixture/scalars/JdkValuedEntityFixture.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-fixture/src/main/java/org/apache/isis/core/tck/fixture/scalars/JdkValuedEntityFixture.java b/core/tck/tck-fixture/src/main/java/org/apache/isis/core/tck/fixture/scalars/JdkValuedEntityFixture.java
index 9d337a2..73e5dd1 100644
--- a/core/tck/tck-fixture/src/main/java/org/apache/isis/core/tck/fixture/scalars/JdkValuedEntityFixture.java
+++ b/core/tck/tck-fixture/src/main/java/org/apache/isis/core/tck/fixture/scalars/JdkValuedEntityFixture.java
@@ -46,7 +46,7 @@ public class JdkValuedEntityFixture extends AbstractFixture {
         final JdkValuedEntity entity = jdkValuesEntityRepository.newEntity();
         entity.setBigDecimalProperty(new BigDecimal("12345678901234567890.1234567890"));
         entity.setBigDecimalProperty2(new BigDecimal("123.45"));
-        entity.setBigIntegerProperty(new BigInteger("12345678901234567890"));
+        entity.setBigIntegerProperty(new BigInteger("123456789012345678"));
         entity.setBigIntegerProperty2(new BigInteger("12345"));
         entity.setJavaSqlDateProperty(asSqlDate("2014-04-24"));
         entity.setJavaSqlTimeProperty(asSqlTime("1970-01-01T12:34:45Z"));