TCK: pick up constraints on 'inherited' fields
Project: http://git-wip-us.apache.org/repos/asf/bval/repo Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/69a817da Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/69a817da Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/69a817da Branch: refs/heads/bv2 Commit: 69a817dace7640bbf5e6d78471c4812a85edad21 Parents: 7fab00d Author: Matt Benson <[email protected]> Authored: Thu Apr 5 12:17:45 2018 -0500 Committer: Matt Benson <[email protected]> Committed: Thu Apr 5 12:17:45 2018 -0500 ---------------------------------------------------------------------- .../apache/bval/jsr/metadata/HierarchyBuilder.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/bval/blob/69a817da/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/HierarchyBuilder.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/HierarchyBuilder.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/HierarchyBuilder.java index 5fe228c..b449a6b 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/HierarchyBuilder.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/HierarchyBuilder.java @@ -95,7 +95,19 @@ public class HierarchyBuilder extends CompositeBuilder { @Override public Map<String, MetadataBuilder.ForContainer<Field>> getFields(Meta<Class<T>> meta) { - return delegate.getFields(hierarchyElement); + final Map<String, MetadataBuilder.ForContainer<Field>> fields = delegate.getFields(hierarchyElement); + + if (fields.isEmpty()) { + return fields; + } + final Map<String, MetadataBuilder.ForContainer<Field>> result = new LinkedHashMap<>(); + + fields.forEach((k, v) -> { + final Field fld = Reflection.getDeclaredField(hierarchyElement.getHost(), k); + Exceptions.raiseIf(fld == null, IllegalStateException::new, "delegate builder specified unknown field"); + result.put(k, new ContainerDelegate<Field>(v, new Meta.ForField(fld))); + }); + return result; } @Override @@ -113,6 +125,9 @@ public class HierarchyBuilder extends CompositeBuilder { @Override public Map<String, MetadataBuilder.ForContainer<Method>> getGetters(Meta<Class<T>> meta) { final Map<String, MetadataBuilder.ForContainer<Method>> getters = delegate.getGetters(hierarchyElement); + if (getters.isEmpty()) { + return getters; + } final Map<String, MetadataBuilder.ForContainer<Method>> result = new LinkedHashMap<>(); getters.forEach((k, v) -> {
