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/24 07:29:37 UTC
[1/2] isis git commit: ISIS-933: fixing layout issues when the
layout.xml HAS been specified...
Repository: isis
Updated Branches:
refs/heads/ISIS-993 4ccb9caa1 -> 23f923342
ISIS-933: fixing layout issues when the layout.xml HAS been specified...
* was adding in properties to fieldsets twice, even if already in the fieldset. (This bug because previously I had been focusing on getting the auto-add for non-referenced properties to work, based on @MemberOrder)
Also:
* ensuring that can reload dynamically without having to invalidate cache. This bug was due to the SpeificationCacheDefault ( which maintains two separate hashmaps to cache specs) getting out-of-whack internally ... specId holding one version of a spec, while className holding a different on.
* remove versionSequence from SimpleObject (as now have the Persistable_... mixins).
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/97abf1b4
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/97abf1b4
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/97abf1b4
Branch: refs/heads/ISIS-993
Commit: 97abf1b441e813a18a637d64d07ae31c1c934fd3
Parents: 4ccb9ca
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Feb 24 06:25:06 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Feb 24 06:25:06 2016 +0000
----------------------------------------------------------------------
.../services/grid/GridNormalizerServiceAbstract.java | 15 ---------------
.../grid/bootstrap3/GridNormalizerServiceBS3.java | 15 ++++++++++++++-
.../metamodel/specloader/ObjectReflectorDefault.java | 2 +-
.../specloader/SpecificationCacheDefault.java | 5 ++++-
.../viewer/wicket/ui/pages/entity/EntityPage.java | 7 ++++---
.../main/java/domainapp/dom/simple/SimpleObject.java | 14 ++------------
.../domainapp/dom/simple/SimpleObject.layout.xml | 11 +++++------
7 files changed, 30 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/97abf1b4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridNormalizerServiceAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridNormalizerServiceAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridNormalizerServiceAbstract.java
index 8d92c89..db40d07 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridNormalizerServiceAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridNormalizerServiceAbstract.java
@@ -21,7 +21,6 @@ import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
import javax.inject.Inject;
@@ -641,20 +640,6 @@ public abstract class GridNormalizerServiceAbstract<G extends Grid>
}
- protected static String nextInSequenceFor(
- final String key, final Map<String, int[]> seqByKey) {
- synchronized (seqByKey) {
- int[] holder = seqByKey.get(key);
- if(holder == null) {
- holder = new int[]{0};
- seqByKey.put(key, holder);
- }
- holder[0]++;
- return ""+holder[0];
- }
- }
-
-
protected SpecificationLoader specificationLookup;
public void setSpecificationLoader(final SpecificationLoader specificationLookup) {
http://git-wip-us.apache.org/repos/asf/isis/blob/97abf1b4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java
index 9ad5161..e99a9e1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java
@@ -509,8 +509,21 @@ public class GridNormalizerServiceBS3 extends GridNormalizerServiceAbstract<BS3G
protected void addPropertiesTo(
final FieldSet fieldSet,
final List<String> propertyIds) {
+ final List<PropertyLayoutData> properties = fieldSet.getProperties();
+ final ImmutableList<String> existingIds = FluentIterable
+ .from(properties)
+ .transform(new Function<PropertyLayoutData, String>() {
+ @Nullable
+ @Override
+ public String apply(@Nullable final PropertyLayoutData propertyLayoutData) {
+ return propertyLayoutData.getId();
+ }
+ })
+ .toList();
for (final String propertyId : propertyIds) {
- fieldSet.getProperties().add(new PropertyLayoutData(propertyId));
+ if(!existingIds.contains(propertyId)) {
+ properties.add(new PropertyLayoutData(propertyId));
+ }
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/97abf1b4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
index 2957dd7..a48fab0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
@@ -385,7 +385,7 @@ public final class ObjectReflectorDefault
// don't have an ObjectSpecId; hence the guard.
if(spec.containsDoOpFacet(ObjectSpecIdFacet.class)) {
ObjectSpecId specId = spec.getSpecId();
- if (getCache().getByObjectType(specId) == null) {
+ if (getCache().getByObjectType(specId) != spec) {
getCache().recache(spec);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/97abf1b4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java
index ad23aff..1e4df63 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFac
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
+import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
class SpecificationCacheDefault {
@@ -41,6 +42,7 @@ class SpecificationCacheDefault {
public void cache(final String className, final ObjectSpecification spec) {
specByClassName.put(className, spec);
+ recache(spec);
}
@@ -60,7 +62,8 @@ class SpecificationCacheDefault {
}
/**
- * Populated as a result of running {@link MetaModelValidator#validate() validation} after xxxallxxx most specs have been loaded.
+ * Populated as a result of running {@link MetaModelValidator#validate(ValidationFailures)} validation} after
+ * xxxallxxx most specs have been loaded.
*/
void setCacheBySpecId(Map<ObjectSpecId, ObjectSpecification> specById) {
this.specById = Maps.newHashMap();
http://git-wip-us.apache.org/repos/asf/isis/blob/97abf1b4/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 26ab321..f1d05e1 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
@@ -145,9 +145,10 @@ public class EntityPage extends PageAbstract {
// if none, then fallback to invalidating entire cache
// (this is the original LayoutMetadataFromJson behaviour)
- if(!getDeploymentType().isProduction()) {
- getSpecificationLoader().invalidateCacheFor(objectAdapter.getObject());
- }
+
+// if(!getDeploymentType().isProduction()) {
+// getSpecificationLoader().invalidateCacheFor(objectAdapter.getObject());
+// }
// as a side-effect, this will update facets
final Grid unused = facet.getGrid();
http://git-wip-us.apache.org/repos/asf/isis/blob/97abf1b4/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.java
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.java b/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.java
index 6ac1bf3..366dbb3 100644
--- a/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.java
+++ b/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.java
@@ -21,7 +21,6 @@ package domainapp.dom.simple;
import java.util.List;
import javax.inject.Inject;
-import javax.jdo.JDOHelper;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.VersionStrategy;
@@ -31,6 +30,7 @@ import org.apache.isis.applib.annotation.BookmarkPolicy;
import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainObjectLayout;
+import org.apache.isis.applib.annotation.Editing;
import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.Parameter;
import org.apache.isis.applib.annotation.ParameterLayout;
@@ -85,7 +85,7 @@ public class SimpleObject implements Comparable<SimpleObject> {
length = NAME_LENGTH
)
@Property(
- //editing = Editing.DISABLED
+ editing = Editing.DISABLED
)
@PropertyLayout(
namedEscaped = false
@@ -135,16 +135,6 @@ public class SimpleObject implements Comparable<SimpleObject> {
}
- /**
- * version (derived property)
- */
- public java.sql.Timestamp getVersionSequence() {
- return (java.sql.Timestamp) JDOHelper.getVersion(this);
- }
-
- public boolean hideVersionSequence() {
- return getName().contains("ob");
- }
@Override
public int compareTo(final SimpleObject other) {
http://git-wip-us.apache.org/repos/asf/isis/blob/97abf1b4/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.xml b/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.xml
index c0eaded..85b6a0c 100644
--- a/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.xml
+++ b/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.xml
@@ -13,18 +13,17 @@
<bs3:row>
<bs3:col span="12">
<c:fieldSet name="Properties">
- <c:property id="name"/>
- <c:property id="versionSequence"/>
+ <c:property id="name">
+ <c:action id="updateName" position="BELOW"/>
+ </c:property>
</c:fieldSet>
</bs3:col>
</bs3:row>
</bs3:tab>
- <bs3:tab name="Misc">
+ <bs3:tab name="Metadata">
<bs3:row>
<bs3:col span="12">
- <c:fieldSet name="Metadata">
- <c:property id="versionSequence"/>
- </c:fieldSet>
+ <c:fieldSet name="Metadata"/>
</bs3:col>
</bs3:row>
</bs3:tab>
[2/2] isis git commit: ISIS-1311: split out
Persistable_datanucleusVersion mixin into two,
one for timestamps and one for longs (per different VersionStrategy in JDO
annotation).
Posted by da...@apache.org.
ISIS-1311: split out Persistable_datanucleusVersion mixin into two, one for timestamps and one for longs (per different VersionStrategy in JDO annotation).
Also:
- remove the hideXxx() for Object_downloadLayoutXml mixin, will always be visible.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/23f92334
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/23f92334
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/23f92334
Branch: refs/heads/ISIS-993
Commit: 23f92334256fb76ee57d9f2807df2602cab60096
Parents: 97abf1b
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Feb 24 06:28:55 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Feb 24 06:28:55 2016 +0000
----------------------------------------------------------------------
.../layout/Object_downloadLayoutXml.java | 6 +-
.../jdosupport/Persistable_datanucleusId.java | 6 +-
.../Persistable_datanucleusVersion.java | 64 --------------------
.../Persistable_datanucleusVersionLong.java | 64 ++++++++++++++++++++
...Persistable_datanucleusVersionTimestamp.java | 64 ++++++++++++++++++++
5 files changed, 132 insertions(+), 72 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/23f92334/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_downloadLayoutXml.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_downloadLayoutXml.java b/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_downloadLayoutXml.java
index eee95b0..0a0fb47 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_downloadLayoutXml.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_downloadLayoutXml.java
@@ -52,7 +52,7 @@ public class Object_downloadLayoutXml {
cssClassFa = "fa-download",
position = ActionLayout.Position.PANEL_DROPDOWN
)
- @MemberOrder(name = "Metadata", sequence = "550.1")
+ @MemberOrder(name = "Metadata", sequence = "700.1")
public Object $$(
@ParameterLayout(named = "File name")
final String fileName,
@@ -67,10 +67,6 @@ public class Object_downloadLayoutXml {
return new Clob(Util.withSuffix(fileName, style.name().toLowerCase() + ".xml"), "text/xml", xml);
}
- public boolean hide$$() {
- // can use either style to determine whether this action should be hidden
- return getGrid(GridService.Style.NORMALIZED) == null;
- }
public String default0$$() {
return Util.withSuffix(object.getClass().getSimpleName(), "layout");
}
http://git-wip-us.apache.org/repos/asf/isis/blob/23f92334/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusId.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusId.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusId.java
index 15a7296..51041e6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusId.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusId.java
@@ -53,7 +53,7 @@ public class Persistable_datanucleusId {
hidden = Where.ALL_TABLES
)
@MemberOrder(name = "Metadata", sequence = "800.1")
- public Long datanucleusId() {
+ public Long $$() {
final Object objectId = JDOHelper.getObjectId(persistable);
if(objectId instanceof DatastoreId) {
final DatastoreId datastoreId = (DatastoreId) objectId;
@@ -63,8 +63,8 @@ public class Persistable_datanucleusId {
return null;
}
- public boolean hideDatanucleusId() {
- return datanucleusId() == null;
+ public boolean hide$$() {
+ return $$() == null;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/23f92334/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusVersion.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusVersion.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusVersion.java
deleted file mode 100644
index 083ba86..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusVersion.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2015-2016 Eurocommercial Properties NV
- *
- * Licensed 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.metamodel.services.jdosupport;
-
-import javax.jdo.JDOHelper;
-
-import org.datanucleus.enhancement.Persistable;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.Contributed;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Mixin;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.annotation.Where;
-
-@Mixin
-public class Persistable_datanucleusVersion {
-
- private final Persistable persistable;
-
- public Persistable_datanucleusVersion(final Persistable persistable) {
- this.persistable = persistable;
- }
-
- public static class ActionDomainEvent extends org.apache.isis.applib.IsisApplibModule.ActionDomainEvent<Persistable_datanucleusVersion> {}
-
- @Action(
- domainEvent = ActionDomainEvent.class,
- semantics = SemanticsOf.SAFE
- )
- @ActionLayout(
- contributed = Contributed.AS_ASSOCIATION
- )
- @PropertyLayout(
- named = "Version",
- hidden = Where.ALL_TABLES
- )
- @MemberOrder(name = "Metadata", sequence = "800.2")
- public Long datanucleusVersion() {
- final Object version = JDOHelper.getVersion(persistable);
- return version != null && version instanceof Long ? (Long) version : null;
- }
-
- public boolean hideDatanucleusVersion() {
- return datanucleusVersion() == null;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/23f92334/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusVersionLong.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusVersionLong.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusVersionLong.java
new file mode 100644
index 0000000..0bf2603
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusVersionLong.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2015-2016 Eurocommercial Properties NV
+ *
+ * Licensed 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.metamodel.services.jdosupport;
+
+import javax.jdo.JDOHelper;
+
+import org.datanucleus.enhancement.Persistable;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Contributed;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Mixin;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Where;
+
+@Mixin
+public class Persistable_datanucleusVersionLong {
+
+ private final Persistable persistable;
+
+ public Persistable_datanucleusVersionLong(final Persistable persistable) {
+ this.persistable = persistable;
+ }
+
+ public static class ActionDomainEvent extends org.apache.isis.applib.IsisApplibModule.ActionDomainEvent<Persistable_datanucleusVersionLong> {}
+
+ @Action(
+ domainEvent = ActionDomainEvent.class,
+ semantics = SemanticsOf.SAFE
+ )
+ @ActionLayout(
+ contributed = Contributed.AS_ASSOCIATION
+ )
+ @PropertyLayout(
+ named = "Version",
+ hidden = Where.ALL_TABLES
+ )
+ @MemberOrder(name = "Metadata", sequence = "800.2")
+ public Long $$() {
+ final Object version = JDOHelper.getVersion(persistable);
+ return version != null && version instanceof Long ? (Long) version : null;
+ }
+
+ public boolean hide$$() {
+ return $$() == null;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/23f92334/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusVersionTimestamp.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusVersionTimestamp.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusVersionTimestamp.java
new file mode 100644
index 0000000..24960a9
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_datanucleusVersionTimestamp.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2015-2016 Eurocommercial Properties NV
+ *
+ * Licensed 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.metamodel.services.jdosupport;
+
+import javax.jdo.JDOHelper;
+
+import org.datanucleus.enhancement.Persistable;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Contributed;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Mixin;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Where;
+
+@Mixin
+public class Persistable_datanucleusVersionTimestamp {
+
+ private final Persistable persistable;
+
+ public Persistable_datanucleusVersionTimestamp(final Persistable persistable) {
+ this.persistable = persistable;
+ }
+
+ public static class ActionDomainEvent extends org.apache.isis.applib.IsisApplibModule.ActionDomainEvent<Persistable_datanucleusVersionTimestamp> {}
+
+ @Action(
+ domainEvent = ActionDomainEvent.class,
+ semantics = SemanticsOf.SAFE
+ )
+ @ActionLayout(
+ contributed = Contributed.AS_ASSOCIATION
+ )
+ @PropertyLayout(
+ named = "Version",
+ hidden = Where.ALL_TABLES
+ )
+ @MemberOrder(name = "Metadata", sequence = "800.2")
+ public java.sql.Timestamp $$() {
+ final Object version = JDOHelper.getVersion(persistable);
+ return version != null && version instanceof java.sql.Timestamp ? (java.sql.Timestamp) version : null;
+ }
+
+ public boolean hide$$() {
+ return $$() == null;
+ }
+
+}