ISIS-993: minor changes, working towards being able to generate .layout.xml for complete vs normalized vs minimal (no longer NPEs for complete etc), however...
... not yet correctly roundtripping for anything other than the complete .layout.xml. Project: http://git-wip-us.apache.org/repos/asf/isis/repo Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/df329882 Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/df329882 Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/df329882 Branch: refs/heads/master Commit: df329882299524e194a7e9d0e86f497421eaa110 Parents: 48fe231 Author: Dan Haywood <d...@haywood-associates.co.uk> Authored: Fri Feb 26 14:43:29 2016 +0000 Committer: Dan Haywood <d...@haywood-associates.co.uk> Committed: Fri Feb 26 14:43:29 2016 +0000 ---------------------------------------------------------------------- .../metamodel/facets/object/grid/GridFacet.java | 10 +++++++++- .../services/grid/GridServiceDefault.java | 17 +++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/isis/blob/df329882/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacet.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacet.java index 75dbda9..4b09be1 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacet.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacet.java @@ -20,10 +20,18 @@ package org.apache.isis.core.metamodel.facets.object.grid; import org.apache.isis.applib.layout.component.Grid; +import org.apache.isis.applib.services.layout.GridNormalizerService; +import org.apache.isis.applib.services.layout.GridService; import org.apache.isis.core.metamodel.facetapi.Facet; /** - * Corresponds to providing a <code>.layout.xml</code> file for the domain object's class. + * Obtain the current grid, derived either from a <code>.layout.xml</code> file, and normalized, or synthesized from + * existing layout metadata (annotations or <code>layout.json</code>). + * + * <p> + * Most of the heavy lifting is done by delegating to the {@link GridService} and {@link GridNormalizerService} + * services. + * </p> */ public interface GridFacet extends Facet { http://git-wip-us.apache.org/repos/asf/isis/blob/df329882/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java index 4ce3f02..7a774d3 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java @@ -229,21 +229,22 @@ public class GridServiceDefault public Grid toGrid(final Class<?> domainClass, final Style style) { switch (style) { case NORMALIZED: - // obtain the already normalized grid, if available. - // (if there is none, then the facet will delegate back to this service to do the normalization, - // but then will cache it for any subsequent requests). - final ObjectSpecification objectSpec = specificationLookup.loadSpecification(domainClass); - final GridFacet facet = objectSpec.getFacet(GridFacet.class); - return facet != null? facet.getGrid(): null; + return normalizedGrid(domainClass); case COMPLETE: - return complete(fromXml(domainClass)); + return complete(normalizedGrid(domainClass)); case MINIMAL: - return minimal(fromXml(domainClass)); + return minimal(normalizedGrid(domainClass)); default: throw new IllegalArgumentException("unsupported style"); } } + protected Grid normalizedGrid(final Class<?> domainClass) { + final ObjectSpecification objectSpec = specificationLookup.loadSpecification(domainClass); + final GridFacet facet = objectSpec.getFacet(GridFacet.class); + return facet != null? facet.getGrid(): null; + } + @Override public String tnsAndSchemaLocation(final Grid grid) { final List<String> parts = Lists.newArrayList();