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 2016/02/10 12:33:37 UTC
[4/5] isis git commit: ISIS-993: hold the domainClass within the grid.
ISIS-993: hold the domainClass within the grid.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/ecf6d170
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/ecf6d170
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/ecf6d170
Branch: refs/heads/ISIS-993
Commit: ecf6d1708be0a409cd8fb5d0257235b3b0de1f5b
Parents: 6053d1a
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Feb 10 10:37:18 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Feb 10 10:37:18 2016 +0000
----------------------------------------------------------------------
.../layout/common/DomainObjectLayoutData.java | 12 +++++
.../apache/isis/applib/layout/common/Grid.java | 20 ++++++--
.../isis/applib/layout/common/GridAbstract.java | 17 +++++++
.../layout/common/PropertyLayoutData.java | 6 +--
.../applib/services/layout/GridService.java | 50 +++++++++++++++-----
.../facets/object/grid/GridFacetDefault.java | 2 +-
.../services/grid/GridServiceDefault.java | 32 +++++--------
7 files changed, 98 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/ecf6d170/core/applib/src/main/java/org/apache/isis/applib/layout/common/DomainObjectLayoutData.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/DomainObjectLayoutData.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/DomainObjectLayoutData.java
index 702a3d6..d15d27b 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/DomainObjectLayoutData.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/common/DomainObjectLayoutData.java
@@ -54,11 +54,13 @@ public class DomainObjectLayoutData implements Serializable,
private BookmarkPolicy bookmarking;
+ @Override
@XmlAttribute(required = false)
public BookmarkPolicy getBookmarking() {
return bookmarking;
}
+ @Override
public void setBookmarking(BookmarkPolicy bookmarking) {
this.bookmarking = bookmarking;
}
@@ -67,11 +69,13 @@ public class DomainObjectLayoutData implements Serializable,
private String cssClass;
+ @Override
@XmlAttribute(required = false)
public String getCssClass() {
return cssClass;
}
+ @Override
public void setCssClass(String cssClass) {
this.cssClass = cssClass;
}
@@ -79,11 +83,13 @@ public class DomainObjectLayoutData implements Serializable,
private String cssClassFa;
+ @Override
@XmlAttribute(required = false)
public String getCssClassFa() {
return cssClassFa;
}
+ @Override
public void setCssClassFa(String cssClassFa) {
this.cssClassFa = cssClassFa;
}
@@ -92,11 +98,13 @@ public class DomainObjectLayoutData implements Serializable,
private org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition cssClassFaPosition;
+ @Override
@XmlAttribute(required = false)
public org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition getCssClassFaPosition() {
return cssClassFaPosition;
}
+ @Override
public void setCssClassFaPosition(org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition cssClassFaPosition) {
this.cssClassFaPosition = cssClassFaPosition;
}
@@ -104,11 +112,13 @@ public class DomainObjectLayoutData implements Serializable,
private String describedAs;
+ @Override
@XmlElement(required = false)
public String getDescribedAs() {
return describedAs;
}
+ @Override
public void setDescribedAs(String describedAs) {
this.describedAs = describedAs;
}
@@ -117,11 +127,13 @@ public class DomainObjectLayoutData implements Serializable,
private String named;
+ @Override
@XmlElement(required = false)
public String getNamed() {
return named;
}
+ @Override
public void setNamed(String named) {
this.named = named;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/ecf6d170/core/applib/src/main/java/org/apache/isis/applib/layout/common/Grid.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/Grid.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/Grid.java
index 7380a3a..fd7b067 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/Grid.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/common/Grid.java
@@ -19,10 +19,8 @@
package org.apache.isis.applib.layout.common;
import java.util.LinkedHashMap;
-import java.util.List;
import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.layout.bootstrap3.BS3Col;
import org.apache.isis.applib.services.layout.GridService;
/**
@@ -34,15 +32,26 @@ import org.apache.isis.applib.services.layout.GridService;
*/
public interface Grid {
+ @Programmatic
+ Class<?> getDomainClass();
+
+ @Programmatic
+ void setDomainClass(final Class<?> domainClass);
+
+ @Programmatic
boolean isNormalized();
+ @Programmatic
void setNormalized(final boolean normalized);
- @Programmatic LinkedHashMap<String, PropertyLayoutData> getAllPropertiesById();
+ @Programmatic
+ LinkedHashMap<String, PropertyLayoutData> getAllPropertiesById();
- @Programmatic LinkedHashMap<String, CollectionLayoutData> getAllCollectionsById();
+ @Programmatic
+ LinkedHashMap<String, CollectionLayoutData> getAllCollectionsById();
- @Programmatic LinkedHashMap<String, ActionLayoutData> getAllActionsById();
+ @Programmatic
+ LinkedHashMap<String, ActionLayoutData> getAllActionsById();
interface Visitor {
void visit(final DomainObjectLayoutData domainObjectLayoutData);
@@ -69,6 +78,7 @@ public interface Grid {
}
}
+ @Programmatic
void visit(final Grid.Visitor visitor);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/ecf6d170/core/applib/src/main/java/org/apache/isis/applib/layout/common/GridAbstract.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/GridAbstract.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/GridAbstract.java
index 2efb85c..d320dff 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/GridAbstract.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/common/GridAbstract.java
@@ -39,6 +39,23 @@ import org.apache.isis.applib.services.layout.GridService;
@XmlTransient // ignore this class
public abstract class GridAbstract implements Grid {
+
+ private Class<?> domainClass;
+
+ @Programmatic
+ @XmlTransient
+ public Class<?> getDomainClass() {
+ return domainClass;
+ }
+
+ @Programmatic
+ @XmlTransient
+ public void setDomainClass(final Class<?> domainClass) {
+ this.domainClass = domainClass;
+ }
+
+
+
private boolean normalized;
@Programmatic
http://git-wip-us.apache.org/repos/asf/isis/blob/ecf6d170/core/applib/src/main/java/org/apache/isis/applib/layout/common/PropertyLayoutData.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/PropertyLayoutData.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/PropertyLayoutData.java
index 9bbec66..923833a 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/PropertyLayoutData.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/common/PropertyLayoutData.java
@@ -242,13 +242,11 @@ public class PropertyLayoutData
}
-
-
- @Override public String toString() {
+ @Override
+ public String toString() {
return "PropertyLayoutData{" +
"id='" + id + '\'' +
'}';
}
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/ecf6d170/core/applib/src/main/java/org/apache/isis/applib/services/layout/GridService.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/layout/GridService.java b/core/applib/src/main/java/org/apache/isis/applib/services/layout/GridService.java
index ec2d699..fc33df4 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/layout/GridService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/layout/GridService.java
@@ -18,6 +18,8 @@ package org.apache.isis.applib.services.layout;
import java.util.List;
+import org.apache.isis.applib.annotation.MemberGroupLayout;
+import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.layout.common.Grid;
@@ -26,12 +28,14 @@ public interface GridService {
/**
* Whether any metadata exists for this domain class, and if so then whether it is valid or invalid.
*/
- @Programmatic boolean exists(Class<?> domainClass);
+ @Programmatic
+ boolean exists(Class<?> domainClass);
/**
* Returns (raw unnormalized) metadata, eg per the <code>.layout.xml</code> file.
*/
- @Programmatic Grid fromXml(Class<?> domainClass);
+ @Programmatic
+ Grid fromXml(Class<?> domainClass);
/**
* Normalize the grid with respect to the specified domain class.
@@ -40,27 +44,48 @@ public interface GridService {
* This will (often) modify the grid graph in order to add in any unreferenced actions and so forth.
* </p>
*/
- Grid normalize(Grid grid, final Class<?> domainClass);
+ Grid normalize(Grid grid);
- Grid complete(Grid grid, final Class<?> domainClass);
+ Grid complete(Grid grid);
- Grid minimal(Grid grid, final Class<?> domainClass);
+ Grid minimal(Grid grid);
enum Style {
+ /**
+ * As per {@link #NORMALIZED}, but also with all (non-null) facets for all
+ * properties/collections/actions also included included in the grid.
+ *
+ * <p>
+ * The intention here is that any layout metadata annotations can be removed from the code.
+ * </p>
+ */
COMPLETE,
/**
- * Default, corresponding to raw state along with any additional regions added
- * as a result of normalization process.
+ * Default, whereby missing properties/collections/actions are added to regions,
+ * and unused/empty regions are removed/trimmed.
+ *
+ * <p>
+ * It should be possible to remove any {@link MemberOrder} and {@link MemberGroupLayout} annotations but
+ * any layout annotations would need to be retained.
+ * </p>
*/
NORMALIZED,
+ /**
+ * As per {@link #NORMALIZED}, but with no properties/collections/actions.
+ *
+ * <p>
+ * The intention here is for layout annotations that "bind" the properties/collections/actions
+ * to the regions to be retained.
+ * </p>
+ */
MINIMAL
}
/**
- * Obtains the (normalized) layout metadata, if any, for the (domain class of the) specified domain object.
+ * Obtains the layout metadata, if any, for the (domain class of the) specified domain object.
*
- * @param style - whether the returned grid should be complete (having been normalized), or should be as
+ * @param style - whether the returned grid should be complete, normalized, or as
* minimal as possible.
*/
@Programmatic Grid toGrid(Object domainObject, final Style style);
@@ -78,12 +103,13 @@ public interface GridService {
/**
* For all of the available {@link GridNormalizerService}s available, return only the first one for any that
* are for the same grid implementation.
- * <p/>
+ *
* <p>
- * This allows default implementations (eg for bootstrap3) to be overridden while also allowing for the more
- * general idea of multiple implementations.
+ * This allows default implementations (eg for bootstrap3) to be overridden while also allowing for the more
+ * general idea of multiple implementations.
* </p>
*/
@Programmatic
List<GridNormalizerService<?>> gridNormalizerServices();
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/ecf6d170/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetDefault.java
index 4f5f0ae..fc9ee46 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetDefault.java
@@ -85,7 +85,7 @@ public class GridFacetDefault
}
final Class<?> domainClass = getSpecification().getCorrespondingClass();
- return gridService.normalize(grid, domainClass);
+ return gridService.normalize(grid);
}
private ObjectSpecification getSpecification() {
http://git-wip-us.apache.org/repos/asf/isis/blob/ecf6d170/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 1d078f5..97588b9 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
@@ -127,11 +127,12 @@ public class GridServiceDefault
.toList();
final JAXBContext context = JAXBContext.newInstance(pageImplementations.toArray(new Class[0]));
- final Grid metadata = (Grid) jaxbService.fromXml(context, xml);
+ final Grid grid = (Grid) jaxbService.fromXml(context, xml);
+ grid.setDomainClass(domainClass);
if(!deploymentCategory.isProduction()) {
- pageByXml.put(xml, metadata);
+ pageByXml.put(xml, grid);
}
- return metadata;
+ return grid;
} catch(Exception ex) {
if(!deploymentCategory.isProduction()) {
@@ -150,7 +151,7 @@ public class GridServiceDefault
@Override
@Programmatic
- public Grid normalize(final Grid grid, final Class<?> domainClass) {
+ public Grid normalize(final Grid grid) {
// if have .layout.json and then add a .layout.xml without restarting, then note that
// the changes won't be picked up. Normalizing would be required
@@ -159,6 +160,8 @@ public class GridServiceDefault
return grid;
}
+ final Class<?> domainClass = grid.getDomainClass();
+
for (GridNormalizerService gridNormalizerService : gridNormalizerServices()) {
gridNormalizerService.normalize(grid, domainClass);
}
@@ -170,8 +173,9 @@ public class GridServiceDefault
@Override
@Programmatic
- public Grid complete(final Grid grid, final Class<?> domainClass) {
+ public Grid complete(final Grid grid) {
+ final Class<?> domainClass = grid.getDomainClass();
for (GridNormalizerService gridNormalizerService : gridNormalizerServices()) {
gridNormalizerService.complete(grid, domainClass);
}
@@ -181,8 +185,9 @@ public class GridServiceDefault
@Override
@Programmatic
- public Grid minimal(final Grid grid, final Class<?> domainClass) {
+ public Grid minimal(final Grid grid) {
+ final Class<?> domainClass = grid.getDomainClass();
for (GridNormalizerService gridNormalizerService : gridNormalizerServices()) {
gridNormalizerService.minimal(grid, domainClass);
}
@@ -217,25 +222,14 @@ public class GridServiceDefault
final GridFacet facet = objectSpec.getFacet(GridFacet.class);
return facet != null? facet.getGrid(): null;
case COMPLETE:
- return completeGridFor(domainClass);
+ return complete(fromXml(domainClass));
case MINIMAL:
- return minimalGridFor(domainClass);
+ return minimal(fromXml(domainClass));
default:
throw new IllegalArgumentException("unsupported style");
}
}
- protected Grid minimalGridFor(final Class<?> domainClass) {
- Grid grid = fromXml(domainClass);
- return grid;
- }
-
- protected Grid completeGridFor(final Class<?> domainClass) {
- Grid grid = fromXml(domainClass);
- grid = normalize(grid, domainClass);
- return grid;
- }
-
@Override
public String tnsAndSchemaLocation(final Grid grid) {
final List<String> parts = Lists.newArrayList();