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/03/03 11:38:24 UTC
[1/2] isis git commit: ISIS-993: only include entities and view
models' layouts in zip file from MetadataMenu#downloadLayouts (XML)
Repository: isis
Updated Branches:
refs/heads/ISIS-993 bf1288c28 -> 7628fc9d3
ISIS-993: only include entities and view models' layouts in zip file from MetadataMenu#downloadLayouts (XML)
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/2c629125
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/2c629125
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/2c629125
Branch: refs/heads/ISIS-993
Commit: 2c62912527240861e2d26bbfac470f06dde70111
Parents: bf1288c
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Mar 2 18:12:20 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Mar 2 18:12:20 2016 +0000
----------------------------------------------------------------------
.../services/metamodel/MetadataMenu.java | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/2c629125/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetadataMenu.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetadataMenu.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetadataMenu.java
index 2872f1e..bcec6c9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetadataMenu.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetadataMenu.java
@@ -27,9 +27,11 @@ import java.util.zip.ZipOutputStream;
import javax.activation.MimeType;
import javax.activation.MimeTypeParseException;
import javax.inject.Inject;
+import javax.xml.bind.Marshaller;
import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
+import com.google.common.collect.ImmutableMap;
import org.apache.isis.applib.FatalException;
import org.apache.isis.applib.IsisApplibModule;
@@ -46,9 +48,11 @@ import org.apache.isis.applib.layout.component.Grid;
import org.apache.isis.applib.services.jaxb.JaxbService;
import org.apache.isis.applib.services.layout.GridService;
import org.apache.isis.applib.value.Blob;
+import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpiAware;
+import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
@DomainService(
nature = NatureOfService.VIEW_MENU_ONLY
@@ -99,9 +103,8 @@ public class MetadataMenu implements SpecificationLoaderSpiAware {
@Override
public boolean apply(final ObjectSpecification input) {
return !input.isAbstract() &&
- !input.isService() &&
- !input.isValue() &&
- !input.isParentedOrFreeCollection();
+ (input.containsDoOpFacet(JdoPersistenceCapableFacet.class) ||
+ input.containsDoOpFacet(ViewModelFacet.class));
}});
try {
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -112,7 +115,11 @@ public class MetadataMenu implements SpecificationLoaderSpiAware {
final Grid grid = gridService.toGrid(domainClass, style);
if(grid != null) {
zos.putNextEntry(new ZipEntry(zipEntryNameFor(objectSpec)));
- String xml = jaxbService.toXml(grid);
+ final String xml = jaxbService.toXml(grid,
+ ImmutableMap.<String,Object>of(
+ Marshaller.JAXB_SCHEMA_LOCATION,
+ gridService.tnsAndSchemaLocation(grid)
+ ));
writer.write(xml);
writer.flush();
zos.closeEntry();
@@ -126,6 +133,10 @@ public class MetadataMenu implements SpecificationLoaderSpiAware {
}
}
+ public GridService.Style default0DownloadLayouts() {
+ return GridService.Style.NORMALIZED;
+ }
+
private static String zipEntryNameFor(final ObjectSpecification objectSpec) {
final String fqn = objectSpec.getFullIdentifier();
return fqn.replace(".", File.separator)+".layout.xml";
[2/2] isis git commit: ISIS-993: ensure columns in tables are
rendered in correct order (require eagerly obtaining grid);
also when rendering, ignore any invalid properties/collections/actions.
Posted by da...@apache.org.
ISIS-993: ensure columns in tables are rendered in correct order (require eagerly obtaining grid); also when rendering, ignore any invalid properties/collections/actions.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/7628fc9d
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/7628fc9d
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/7628fc9d
Branch: refs/heads/ISIS-993
Commit: 7628fc9d309c8a58ca9f9bbe1e29fa5c5cc044e6
Parents: 2c62912
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Mar 3 10:38:07 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Mar 3 10:38:07 2016 +0000
----------------------------------------------------------------------
.../metamodel/spec/feature/ObjectMember.java | 13 ++++++++++-
.../CollectionContentsAsAjaxTablePanel.java | 23 +++++++++++++++++---
.../entity/fieldset/PropertyGroup.java | 11 ++++++++--
.../ui/components/layout/bs3/col/Col.java | 14 +++++++++++-
.../wicket/ui/pages/entity/EntityPage.java | 21 +++---------------
5 files changed, 57 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/7628fc9d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
index 147cc61..b099991 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
@@ -26,6 +26,7 @@ import java.util.List;
import javax.annotation.Nullable;
import com.google.common.base.Function;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
import org.apache.isis.applib.annotation.When;
@@ -184,7 +185,17 @@ public interface ObjectMember extends ObjectFeature {
private Util(){}
public static <T extends ObjectMember> HashMap<String, T> mapById(final List<T> members) {
- return Maps.newHashMap(Maps.uniqueIndex(members, ObjectMember.Functions.getId()));
+
+ // fails if there are multiple members with the same id...
+ // return Maps.newHashMap(Maps.uniqueIndex(members, ObjectMember.Functions.getId()));
+
+ final HashMap<String, T> memberById = Maps.newHashMap();
+ for (T member : members) {
+ final String id = Functions.getId().apply(member);
+ // if there are multiple members with same id, just disregard
+ memberById.put(id, member);
+ }
+ return memberById;
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/7628fc9d/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
index 11bef5c..836fe87 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
@@ -34,11 +34,13 @@ import org.apache.wicket.model.Model;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.filter.Filter;
import org.apache.isis.applib.filter.Filters;
+import org.apache.isis.applib.layout.component.Grid;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
+import org.apache.isis.core.metamodel.facets.object.grid.GridFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
@@ -142,15 +144,30 @@ public class CollectionContentsAsAjaxTablePanel
- private void addTitleColumn(final List<IColumn<ObjectAdapter,String>> columns, ObjectAdapterMemento parentAdapterMementoIfAny, int maxTitleParented, int maxTitleStandalone) {
- int maxTitleLength = getModel().isParented()? maxTitleParented: maxTitleStandalone;
+ private void addTitleColumn(
+ final List<IColumn<ObjectAdapter,String>> columns,
+ final ObjectAdapterMemento parentAdapterMementoIfAny,
+ final int maxTitleParented,
+ final int maxTitleStandalone) {
+ final int maxTitleLength = getModel().isParented()? maxTitleParented: maxTitleStandalone;
columns.add(new ObjectAdapterTitleColumn(parentAdapterMementoIfAny, maxTitleLength));
}
private void addPropertyColumnsIfRequired(final List<IColumn<ObjectAdapter,String>> columns) {
final ObjectSpecification typeOfSpec = getModel().getTypeOfSpecification();
- final Where whereContext =
+ // same code also appears in EntityPage.
+ // we need to do this here otherwise any tables will render the columns in the wrong order until at least
+ // one object of that type has been rendered via EntityPage.
+ final GridFacet gridFacet = typeOfSpec.getFacet(GridFacet.class);
+ if(gridFacet != null) {
+ // the facet should always exist, in fact
+ // just enough to ask for the metadata.
+ // This will cause the current ObjectSpec to be updated as a side effect.
+ final Grid unused = gridFacet.getGrid();
+ }
+
+ final Where whereContext =
getModel().isParented()
? Where.PARENTED_TABLES
: Where.STANDALONE_TABLES;
http://git-wip-us.apache.org/repos/asf/isis/blob/7628fc9d/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
index a1810bf..e77dfab 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
@@ -97,9 +97,16 @@ public class PropertyGroup extends PanelAbstract<EntityModel> implements HasDyna
div.add(propertyRv);
final ImmutableList<ObjectAssociation> visibleAssociations = FluentIterable.from(properties)
+ .filter(new Predicate<PropertyLayoutData>() {
+ @Override
+ public boolean apply(final PropertyLayoutData propertyLayoutData) {
+ return propertyLayoutData.getMetadataError() == null;
+ }
+ })
.transform(new Function<PropertyLayoutData, ObjectAssociation>() {
- @Override public ObjectAssociation apply(final PropertyLayoutData propertyLayoutData) {
- return adapter.getSpecification().getAssociation(propertyLayoutData.getId());
+ @Override
+ public ObjectAssociation apply(final PropertyLayoutData propertyLayoutData) {
+ return adapter.getSpecification().getAssociation(propertyLayoutData.getId());
}
})
.filter(new Predicate<ObjectAssociation>() {
http://git-wip-us.apache.org/repos/asf/isis/blob/7628fc9d/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java
index 132218f..53c8cae 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java
@@ -131,6 +131,11 @@ public class Col extends PanelAbstract<EntityModel> implements HasDynamicallyVis
final List<ActionLayoutData> actionLayoutDatas = bs3Col.getActions();
final List<ObjectAction> visibleActions =
FluentIterable.from(actionLayoutDatas)
+ .filter(new Predicate<ActionLayoutData>() {
+ @Override public boolean apply(final ActionLayoutData actionLayoutData) {
+ return actionLayoutData.getMetadataError() == null;
+ }
+ })
.transform(new Function<ActionLayoutData, ObjectAction>() {
@Nullable @Override public ObjectAction apply(@Nullable final ActionLayoutData actionLayoutData) {
return getModel().getTypeOfSpecification().getObjectAction(actionLayoutData.getId());
@@ -252,7 +257,14 @@ public class Col extends PanelAbstract<EntityModel> implements HasDynamicallyVis
// collections
- final List<CollectionLayoutData> collections = bs3Col.getCollections();
+ final List<CollectionLayoutData> collections =
+ FluentIterable.from(bs3Col.getCollections()).filter(
+ new Predicate<CollectionLayoutData>() {
+ @Override
+ public boolean apply(final CollectionLayoutData collectionLayoutData) {
+ return collectionLayoutData.getMetadataError() == null;
+ }
+ }).toList();
if(!collections.isEmpty()) {
final RepeatingViewWithDynamicallyVisibleContent collectionRv =
new RepeatingViewWithDynamicallyVisibleContent(ID_COLLECTIONS);
http://git-wip-us.apache.org/repos/asf/isis/blob/7628fc9d/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
index f1d05e1..5c5a507 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
@@ -36,6 +36,7 @@ import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facets.object.grid.GridFacet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -130,29 +131,13 @@ public class EntityPage extends PageAbstract {
throw new ObjectMember.AuthorizationException();
}
-
-
-
- //
- // invalidate the cache so that can do dynamic reloading of layout metadata etc.
- //
- final GridFacet facet = entityModel.getTypeOfSpecification()
- .getFacet(GridFacet.class);
+ final ObjectSpecification objectSpec = entityModel.getTypeOfSpecification();
+ final GridFacet facet = objectSpec.getFacet(GridFacet.class);
if(facet != null) {
// the facet should always exist, in fact
// just enough to ask for the metadata.
// This will cause the current ObjectSpec to be updated as a side effect.
-
- // if none, then fallback to invalidating entire cache
- // (this is the original LayoutMetadataFromJson behaviour)
-
-// if(!getDeploymentType().isProduction()) {
-// getSpecificationLoader().invalidateCacheFor(objectAdapter.getObject());
-// }
-
- // as a side-effect, this will update facets
final Grid unused = facet.getGrid();
-
}