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 2012/08/22 11:22:01 UTC
svn commit: r1375952 [1/2] - in /incubator/isis/trunk:
examples/quickstart/dom/src/main/java/dom/todo/
examples/quickstart/webapp/src/main/webapp/WEB-INF/
examples/quickstart/wicket/src/main/webapp/WEB-INF/
framework/applib/src/main/java/org/apache/isi...
Author: danhaywood
Date: Wed Aug 22 09:21:59 2012
New Revision: 1375952
URL: http://svn.apache.org/viewvc?rev=1375952&view=rev
Log:
ISIS-14, ISIS-240, ISIS-243, ISIS-244
* more on the AuditService for JDO objectstore
* implemented BookmarkService (240)
* removed Maybe type (243)
* hiding statically invisible properties in table view of Wicket (244)
Added:
incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/bookmarks/
incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/bookmarks/Bookmark.java
incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/bookmarks/BookmarkHolder.java
incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/bookmarks/BookmarkService.java
incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/
incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java
incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/object/immutable/markerifc/ImmutableMarkerInterfaceFacetFactory.java
- copied, changed from r1375288, incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/object/immutable/markerifc/ImmutableMarkerInterfacesFacetFactory.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditServiceAbstract.java
- copied, changed from r1375288, incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditService.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditServiceDefault.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditServiceDemo.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/annotations/
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/annotations/Auditable.java
- copied, changed from r1375288, incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/maybe/package-info.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableAnnotationFacetFactory.java
- copied, changed from r1375288, incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/version/OptionalFacetDerivedFromJdoVersionAnnotation.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacet.java
- copied, changed from r1375288, incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetAbstract.java
- copied, changed from r1375288, incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/version/DisabledFacetDerivedFromJdoVersionAnnotation.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotation.java
- copied, changed from r1375288, incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/version/DisabledFacetDerivedFromJdoVersionAnnotation.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetImpl.java
- copied, changed from r1375288, incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterface.java
- copied, changed from r1375288, incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceFacetFactory.java
- copied, changed from r1375288, incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/object/immutable/markerifc/ImmutableMarkerInterfacesFacetFactory.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/GivenAuditableMarkerInterfaceFacetFactoryTest.java
Removed:
incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/maybe/Maybe.java
incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/maybe/package-info.java
incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/object/immutable/markerifc/ImmutableMarkerInterfacesFacetFactory.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/version/DisabledFacetDerivedFromJdoVersionAnnotation.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/version/OptionalFacetDerivedFromJdoVersionAnnotation.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/version/package-info.java
Modified:
incubator/isis/trunk/examples/quickstart/dom/src/main/java/dom/todo/ToDoItem.java
incubator/isis/trunk/examples/quickstart/webapp/src/main/webapp/WEB-INF/isis.properties
incubator/isis/trunk/examples/quickstart/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
incubator/isis/trunk/examples/quickstart/wicket/src/main/webapp/WEB-INF/isis.properties
incubator/isis/trunk/examples/quickstart/wicket/src/main/webapp/WEB-INF/persistor_datanucleus.properties
incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServices.java
incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java
incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
incubator/isis/trunk/framework/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/object/immutable/ImmutableMarkerInterfaceFacetFactoryTest.java
incubator/isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditEntry.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditService.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/persistence/spi/DataNucleusTransaction.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/persistence/spi/DataNucleusTransactionManager.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/prop/primarykey/OptionalFacetDerivedFromJdoPrimaryKeyAnnotation.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/specloader/progmodelfacets/JdoProgrammingModelFacets.java
incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java
incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/container/DomainObjectContainerResolve.java
incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/internal/RuntimeContextFromSession.java
incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/runner/IsisRunner.java
incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/runner/opts/OptionValidator.java
incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/runner/opts/OptionValidatorForPersistor.java
incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/runner/opts/OptionValidatorForViewers.java
incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/runner/opts/OptionValidatorUserAndPasswordCombo.java
incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/services/ServicesInstallerFromConfiguration.java
Modified: incubator/isis/trunk/examples/quickstart/dom/src/main/java/dom/todo/ToDoItem.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/examples/quickstart/dom/src/main/java/dom/todo/ToDoItem.java?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/examples/quickstart/dom/src/main/java/dom/todo/ToDoItem.java (original)
+++ incubator/isis/trunk/examples/quickstart/dom/src/main/java/dom/todo/ToDoItem.java Wed Aug 22 09:21:59 2012
@@ -25,7 +25,6 @@ import java.util.List;
import javax.jdo.JDOHelper;
import javax.jdo.annotations.IdentityType;
-import javax.jdo.annotations.Version;
import javax.jdo.annotations.VersionStrategy;
import javax.jdo.spi.PersistenceCapable;
@@ -35,7 +34,7 @@ import org.apache.isis.applib.annotation
import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.Named;
import org.apache.isis.applib.annotation.Title;
-import org.apache.isis.runtimes.dflt.objectstores.jdo.applib.Auditable;
+import org.apache.isis.runtimes.dflt.objectstores.jdo.applib.annotations.Auditable;
@javax.jdo.annotations.PersistenceCapable(identityType=IdentityType.DATASTORE)
@javax.jdo.annotations.Discriminator("TODO")
@@ -48,8 +47,9 @@ import org.apache.isis.runtimes.dflt.obj
name="todo_similarTo", language="JDOQL",
value="SELECT FROM dom.todo.ToDoItem WHERE ownedBy == :ownedBy && category == :category")
})
-@Version(strategy=VersionStrategy.VERSION_NUMBER, column="VERSION")
-public class ToDoItem extends AbstractDomainObject implements Auditable {
+@javax.jdo.annotations.Version(strategy=VersionStrategy.VERSION_NUMBER, column="VERSION")
+@Auditable
+public class ToDoItem extends AbstractDomainObject {
public static final List<String> CATEGORIES = Collections.unmodifiableList(Arrays.asList("Professional", "Domestic", "Other"));
Modified: incubator/isis/trunk/examples/quickstart/webapp/src/main/webapp/WEB-INF/isis.properties
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/examples/quickstart/webapp/src/main/webapp/WEB-INF/isis.properties?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/examples/quickstart/webapp/src/main/webapp/WEB-INF/isis.properties (original)
+++ incubator/isis/trunk/examples/quickstart/webapp/src/main/webapp/WEB-INF/isis.properties Wed Aug 22 09:21:59 2012
@@ -180,7 +180,7 @@ isis.reflector.class-substitutor=org.apa
# if using the DataNucleus object store:
#isis.services.prefix =
isis.services = objstore.jdo.todo.ToDoItemsJdo,\
- org.apache.isis.runtimes.dflt.objectstores.jdo.applib.AuditService
+ org.apache.isis.runtimes.dflt.objectstores.jdo.applib.AuditServiceDemo
# if using the SQL object store:
Modified: incubator/isis/trunk/examples/quickstart/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/examples/quickstart/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/examples/quickstart/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties (original)
+++ incubator/isis/trunk/examples/quickstart/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties Wed Aug 22 09:21:59 2012
@@ -25,12 +25,16 @@ isis.persistor.datanucleus.impl.datanucl
isis.persistor.datanucleus.impl.datanucleus.validateConstraints=true
-#isis.persistor.datanucleus.install-fixtures=true
-
-
# L2 cache (on by default)
isis.persistor.datanucleus.impl.datanucleus.cache.level2.type=none
+#see http://www.datanucleus.org/products/datanucleus/jdo/transaction_types.html#optimistic
+isis.persistor.datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit=false
+
+
+#isis.persistor.datanucleus.install-fixtures=true
+
+
#
Modified: incubator/isis/trunk/examples/quickstart/wicket/src/main/webapp/WEB-INF/isis.properties
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/examples/quickstart/wicket/src/main/webapp/WEB-INF/isis.properties?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/examples/quickstart/wicket/src/main/webapp/WEB-INF/isis.properties (original)
+++ incubator/isis/trunk/examples/quickstart/wicket/src/main/webapp/WEB-INF/isis.properties Wed Aug 22 09:21:59 2012
@@ -180,7 +180,7 @@ isis.reflector.class-substitutor=org.apa
# if using the DataNucleus object store:
#isis.services.prefix =
isis.services = objstore.jdo.todo.ToDoItemsJdo,\
- org.apache.isis.runtimes.dflt.objectstores.jdo.applib.AuditService
+ org.apache.isis.runtimes.dflt.objectstores.jdo.applib.AuditServiceDemo
# if using the SQL object store:
Modified: incubator/isis/trunk/examples/quickstart/wicket/src/main/webapp/WEB-INF/persistor_datanucleus.properties
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/examples/quickstart/wicket/src/main/webapp/WEB-INF/persistor_datanucleus.properties?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/examples/quickstart/wicket/src/main/webapp/WEB-INF/persistor_datanucleus.properties (original)
+++ incubator/isis/trunk/examples/quickstart/wicket/src/main/webapp/WEB-INF/persistor_datanucleus.properties Wed Aug 22 09:21:59 2012
@@ -25,11 +25,15 @@ isis.persistor.datanucleus.impl.datanucl
isis.persistor.datanucleus.impl.datanucleus.validateConstraints=true
-#isis.persistor.datanucleus.install-fixtures=true
-
# L2 cache (on by default)
isis.persistor.datanucleus.impl.datanucleus.cache.level2.type=none
+#see http://www.datanucleus.org/products/datanucleus/jdo/transaction_types.html#optimistic
+isis.persistor.datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit=false
+
+
+
+#isis.persistor.datanucleus.install-fixtures=true
Added: incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/bookmarks/Bookmark.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/bookmarks/Bookmark.java?rev=1375952&view=auto
==============================================================================
--- incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/bookmarks/Bookmark.java (added)
+++ incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/bookmarks/Bookmark.java Wed Aug 22 09:21:59 2012
@@ -0,0 +1,64 @@
+package org.apache.isis.applib.bookmarks;
+
+/**
+ * String representation of any persistent object managed by the framework.
+ *
+ * <p>
+ * Analogous to the <tt>RootOid</tt>.
+ */
+public class Bookmark {
+
+ private final String objectType;
+ private final String identifier;
+
+ public Bookmark(String objectType, String identifier) {
+ this.objectType = objectType;
+ this.identifier = identifier;
+ }
+
+ public String getObjectType() {
+ return objectType;
+ }
+
+ public String getIdentifier() {
+ return identifier;
+ }
+
+
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((identifier == null) ? 0 : identifier.hashCode());
+ result = prime * result + ((objectType == null) ? 0 : objectType.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Bookmark other = (Bookmark) obj;
+ if (identifier == null) {
+ if (other.identifier != null)
+ return false;
+ } else if (!identifier.equals(other.identifier))
+ return false;
+ if (objectType == null) {
+ if (other.objectType != null)
+ return false;
+ } else if (!objectType.equals(other.objectType))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return objectType + ":" + identifier;
+ }
+}
Added: incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/bookmarks/BookmarkHolder.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/bookmarks/BookmarkHolder.java?rev=1375952&view=auto
==============================================================================
--- incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/bookmarks/BookmarkHolder.java (added)
+++ incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/bookmarks/BookmarkHolder.java Wed Aug 22 09:21:59 2012
@@ -0,0 +1,9 @@
+package org.apache.isis.applib.bookmarks;
+
+import org.apache.isis.applib.annotation.Programmatic;
+
+public interface BookmarkHolder {
+
+ @Programmatic
+ Bookmark bookmark();
+}
Added: incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/bookmarks/BookmarkService.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/bookmarks/BookmarkService.java?rev=1375952&view=auto
==============================================================================
--- incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/bookmarks/BookmarkService.java (added)
+++ incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/bookmarks/BookmarkService.java Wed Aug 22 09:21:59 2012
@@ -0,0 +1,12 @@
+package org.apache.isis.applib.bookmarks;
+
+import org.apache.isis.applib.annotation.Named;
+import org.apache.isis.applib.annotation.NotInServiceMenu;
+
+@Named("Bookmarks")
+public interface BookmarkService {
+
+ @NotInServiceMenu
+ Object lookup(BookmarkHolder bookmarkHolder);
+
+}
Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServices.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServices.java?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServices.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServices.java Wed Aug 22 09:21:59 2012
@@ -18,6 +18,7 @@ package org.apache.isis.core.metamodel.a
import java.util.List;
+import org.apache.isis.applib.bookmarks.Bookmark;
import org.apache.isis.core.commons.components.Injectable;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.adapter.oid.AggregatedOid;
@@ -53,6 +54,10 @@ public interface DomainObjectServices ex
*/
ObjectAdapter createAggregatedInstance(ObjectSpecification spec, ObjectAdapter parent);
+ // ///////////////////////////////////////////
+ // retrieve
+ // ///////////////////////////////////////////
+
/**
* Provided by <tt>PersistenceSession</tt> when used by framework.
*
@@ -69,6 +74,16 @@ public interface DomainObjectServices ex
*/
void resolve(Object parent, Object field);
+ /**
+ * Provided by <tt>PersistenceSession</tt> when used by framework.
+ *
+ * <p>
+ * Called by <tt>BookmarkServicesDefault</tt>.
+ * @return
+ */
+ Object lookup(Bookmark bookmark);
+
+
// ///////////////////////////////////////////
// flush, commit
// ///////////////////////////////////////////
Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java Wed Aug 22 09:21:59 2012
@@ -19,8 +19,11 @@
package org.apache.isis.core.metamodel.adapter;
+import org.apache.isis.applib.annotation.Programmatic;
+
public interface DomainObjectServicesAware {
+ @Programmatic
public void setDomainObjectServices(DomainObjectServices domainObjectServices);
}
Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java Wed Aug 22 09:21:59 2012
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.r
import java.util.Collections;
import java.util.List;
+import org.apache.isis.applib.bookmarks.Bookmark;
import org.apache.isis.applib.profiles.Localization;
import org.apache.isis.applib.query.Query;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
@@ -153,58 +154,64 @@ public class RuntimeContextNoRuntime ext
};
domainObjectServices = new DomainObjectServicesAbstract() {
+
@Override
- public void warnUser(final String message) {
+ public ObjectAdapter createTransientInstance(final ObjectSpecification spec) {
throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
}
-
+
@Override
- public void resolve(final Object parent, final Object field) {
+ public ObjectAdapter createAggregatedInstance(final ObjectSpecification spec, final ObjectAdapter parent) {
throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
}
@Override
- public void resolve(final Object parent) {
+ public Object lookup(Bookmark bookmark) {
throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
}
@Override
- public void raiseError(final String message) {
+ public void resolve(final Object parent, final Object field) {
throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
}
@Override
- public void informUser(final String message) {
+ public void resolve(final Object parent) {
throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
}
@Override
- public List<String> getPropertyNames() {
+ public boolean flush() {
throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
}
-
+
@Override
- public String getProperty(final String name) {
+ public void commit() {
throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
}
@Override
- public boolean flush() {
+ public void informUser(final String message) {
+ throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+ }
+
+ @Override
+ public void warnUser(final String message) {
throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
}
@Override
- public ObjectAdapter createTransientInstance(final ObjectSpecification spec) {
+ public void raiseError(final String message) {
throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
}
@Override
- public void commit() {
+ public List<String> getPropertyNames() {
throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
}
@Override
- public ObjectAdapter createAggregatedInstance(final ObjectSpecification spec, final ObjectAdapter parent) {
+ public String getProperty(final String name) {
throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
}
};
Added: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java?rev=1375952&view=auto
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java (added)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java Wed Aug 22 09:21:59 2012
@@ -0,0 +1,29 @@
+package org.apache.isis.core.metamodel.services.bookmarks;
+
+import org.apache.isis.applib.annotation.NotInServiceMenu;
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.bookmarks.Bookmark;
+import org.apache.isis.applib.bookmarks.BookmarkHolder;
+import org.apache.isis.applib.bookmarks.BookmarkService;
+import org.apache.isis.core.metamodel.adapter.DomainObjectServices;
+import org.apache.isis.core.metamodel.adapter.DomainObjectServicesAware;
+
+public class BookmarkServiceDefault implements BookmarkService, DomainObjectServicesAware {
+
+ private DomainObjectServices domainObjectServices;
+
+ @Override
+ @NotInServiceMenu
+ public Object lookup(BookmarkHolder bookmarkHolder) {
+ Bookmark bookmark = bookmarkHolder.bookmark();
+ Object lookup = domainObjectServices.lookup(bookmark);
+ return lookup;
+ }
+
+ @Override
+ @Programmatic
+ public void setDomainObjectServices(DomainObjectServices domainObjectServices) {
+ this.domainObjectServices = domainObjectServices;
+ }
+
+}
Copied: incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/object/immutable/markerifc/ImmutableMarkerInterfaceFacetFactory.java (from r1375288, incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/object/immutable/markerifc/ImmutableMarkerInterfacesFacetFactory.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/object/immutable/markerifc/ImmutableMarkerInterfaceFacetFactory.java?p2=incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/object/immutable/markerifc/ImmutableMarkerInterfaceFacetFactory.java&p1=incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/object/immutable/markerifc/ImmutableMarkerInterfacesFacetFactory.java&r1=1375288&r2=1375952&rev=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/object/immutable/markerifc/ImmutableMarkerInterfacesFacetFactory.java (original)
+++ incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/object/immutable/markerifc/ImmutableMarkerInterfaceFacetFactory.java Wed Aug 22 09:21:59 2012
@@ -26,16 +26,16 @@ import org.apache.isis.core.metamodel.fa
import org.apache.isis.core.metamodel.facets.When;
import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
-public class ImmutableMarkerInterfacesFacetFactory extends FacetFactoryAbstract {
+public class ImmutableMarkerInterfaceFacetFactory extends FacetFactoryAbstract {
- public ImmutableMarkerInterfacesFacetFactory() {
+ public ImmutableMarkerInterfaceFacetFactory() {
super(FeatureType.OBJECTS_ONLY);
}
@Override
- public void process(final ProcessClassContext processClassContaxt) {
- final When when = When.forCorrespondingMarkerSubType(processClassContaxt.getCls());
- FacetUtil.addFacet(create(when, processClassContaxt.getFacetHolder()));
+ public void process(final ProcessClassContext processClassContext) {
+ final When when = When.forCorrespondingMarkerSubType(processClassContext.getCls());
+ FacetUtil.addFacet(create(when, processClassContext.getFacetHolder()));
}
private ImmutableFacet create(final When when, final FacetHolder holder) {
Modified: incubator/isis/trunk/framework/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/object/immutable/ImmutableMarkerInterfaceFacetFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/object/immutable/ImmutableMarkerInterfaceFacetFactoryTest.java?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/object/immutable/ImmutableMarkerInterfaceFacetFactoryTest.java (original)
+++ incubator/isis/trunk/framework/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/object/immutable/ImmutableMarkerInterfaceFacetFactoryTest.java Wed Aug 22 09:21:59 2012
@@ -28,17 +28,17 @@ import org.apache.isis.core.metamodel.fa
import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryTest;
import org.apache.isis.core.progmodel.facets.object.immutable.markerifc.ImmutableFacetMarkerInterface;
-import org.apache.isis.core.progmodel.facets.object.immutable.markerifc.ImmutableMarkerInterfacesFacetFactory;
+import org.apache.isis.core.progmodel.facets.object.immutable.markerifc.ImmutableMarkerInterfaceFacetFactory;
public class ImmutableMarkerInterfaceFacetFactoryTest extends AbstractFacetFactoryTest {
- private ImmutableMarkerInterfacesFacetFactory facetFactory;
+ private ImmutableMarkerInterfaceFacetFactory facetFactory;
@Override
protected void setUp() throws Exception {
super.setUp();
- facetFactory = new ImmutableMarkerInterfacesFacetFactory();
+ facetFactory = new ImmutableMarkerInterfaceFacetFactory();
}
@Override
Modified: incubator/isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java (original)
+++ incubator/isis/trunk/framework/progmodels/dflt/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java Wed Aug 22 09:21:59 2012
@@ -87,7 +87,7 @@ import org.apache.isis.core.progmodel.fa
import org.apache.isis.core.progmodel.facets.object.ignore.javalang.SyntheticMethodFilteringFacetFactory;
import org.apache.isis.core.progmodel.facets.object.ignore.jdo.RemoveJdoEnhancementTypesFacetFactory;
import org.apache.isis.core.progmodel.facets.object.immutable.annotation.ImmutableAnnotationFacetFactory;
-import org.apache.isis.core.progmodel.facets.object.immutable.markerifc.ImmutableMarkerInterfacesFacetFactory;
+import org.apache.isis.core.progmodel.facets.object.immutable.markerifc.ImmutableMarkerInterfaceFacetFactory;
import org.apache.isis.core.progmodel.facets.object.mask.annotation.MaskAnnotationForTypeFacetFactory;
import org.apache.isis.core.progmodel.facets.object.maxlen.annotation.MaxLengthAnnotationForTypeFacetFactory;
import org.apache.isis.core.progmodel.facets.object.multiline.annotation.MultiLineAnnotationOnTypeFacetFactory;
@@ -305,7 +305,7 @@ public class ProgrammingModelFacetsJava5
addFactory(DisabledFacetForPropertyDerivedFromImmutableTypeFacetFactory.class);
addFactory(DisabledFacetForCollectionDerivedFromImmutableTypeFacetFactory.class);
- addFactory(ImmutableMarkerInterfacesFacetFactory.class);
+ addFactory(ImmutableMarkerInterfaceFacetFactory.class);
addFactory(ViewModelAnnotationFacetFactory.class);
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditEntry.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditEntry.java?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditEntry.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditEntry.java Wed Aug 22 09:21:59 2012
@@ -5,13 +5,16 @@ import javax.jdo.annotations.IdentityTyp
import org.apache.isis.applib.annotation.Hidden;
import org.apache.isis.applib.annotation.Immutable;
import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.bookmarks.Bookmark;
+import org.apache.isis.applib.bookmarks.BookmarkHolder;
import org.apache.isis.applib.value.DateTime;
@javax.jdo.annotations.PersistenceCapable(identityType=IdentityType.DATASTORE)
@javax.jdo.annotations.DatastoreIdentity(strategy=javax.jdo.annotations.IdGeneratorStrategy.IDENTITY)
@Immutable
-public class AuditEntry {
+public class AuditEntry implements BookmarkHolder {
// {{ TimestampUtc (property)
private Long timestampEpoch;
@@ -108,4 +111,12 @@ public class AuditEntry {
}
// }}
+
+ // {{ bookmark (action)
+ @Override
+ @Programmatic
+ public Bookmark bookmark() {
+ return new Bookmark(getObjectType(), getIdentifier());
+ }
+ // }}
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditService.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditService.java?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditService.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditService.java Wed Aug 22 09:21:59 2012
@@ -1,27 +1,10 @@
package org.apache.isis.runtimes.dflt.objectstores.jdo.applib;
-import java.util.List;
-
-import org.apache.isis.applib.AbstractFactoryAndRepository;
import org.apache.isis.applib.annotation.Hidden;
-public class AuditService extends AbstractFactoryAndRepository {
-
- public List<AuditEntry> list() {
- return allInstances(AuditEntry.class);
- }
+public interface AuditService {
@Hidden
- public AuditEntry audit(String user, long currentTimestampEpoch, String objectType, String identifier, String preValue, String postValue) {
- AuditEntry auditEntry = newTransientInstance(AuditEntry.class);
- auditEntry.setTimestampEpoch(currentTimestampEpoch);
- auditEntry.setUser(user);
- auditEntry.setObjectType(objectType);
- auditEntry.setIdentifier(identifier);
- auditEntry.setPreValue(preValue);
- auditEntry.setPostValue(postValue);
- return persist(auditEntry);
- }
-
-
+ public AuditEntry audit(String user, long currentTimestampEpoch, String objectType, String identifier, String preValue, String postValue);
+
}
Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditServiceAbstract.java (from r1375288, incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditService.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditServiceAbstract.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditServiceAbstract.java&p1=incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditService.java&r1=1375288&r2=1375952&rev=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditService.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditServiceAbstract.java Wed Aug 22 09:21:59 2012
@@ -1,15 +1,9 @@
package org.apache.isis.runtimes.dflt.objectstores.jdo.applib;
-import java.util.List;
-
import org.apache.isis.applib.AbstractFactoryAndRepository;
import org.apache.isis.applib.annotation.Hidden;
-public class AuditService extends AbstractFactoryAndRepository {
-
- public List<AuditEntry> list() {
- return allInstances(AuditEntry.class);
- }
+public abstract class AuditServiceAbstract extends AbstractFactoryAndRepository implements AuditService {
@Hidden
public AuditEntry audit(String user, long currentTimestampEpoch, String objectType, String identifier, String preValue, String postValue) {
@@ -23,5 +17,5 @@ public class AuditService extends Abstra
return persist(auditEntry);
}
-
+
}
Added: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditServiceDefault.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditServiceDefault.java?rev=1375952&view=auto
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditServiceDefault.java (added)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditServiceDefault.java Wed Aug 22 09:21:59 2012
@@ -0,0 +1,9 @@
+package org.apache.isis.runtimes.dflt.objectstores.jdo.applib;
+
+import org.apache.isis.applib.annotation.Hidden;
+
+@Hidden
+public class AuditServiceDefault extends AuditServiceAbstract {
+
+
+}
Added: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditServiceDemo.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditServiceDemo.java?rev=1375952&view=auto
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditServiceDemo.java (added)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/AuditServiceDemo.java Wed Aug 22 09:21:59 2012
@@ -0,0 +1,11 @@
+package org.apache.isis.runtimes.dflt.objectstores.jdo.applib;
+
+import java.util.List;
+
+public class AuditServiceDemo extends AuditServiceAbstract {
+
+ public List<AuditEntry> list() {
+ return allInstances(AuditEntry.class);
+ }
+
+}
Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/annotations/Auditable.java (from r1375288, incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/maybe/package-info.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/annotations/Auditable.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/annotations/Auditable.java&p1=incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/maybe/package-info.java&r1=1375288&r2=1375952&rev=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/applib/src/main/java/org/apache/isis/applib/maybe/package-info.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-applib/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/applib/annotations/Auditable.java Wed Aug 22 09:21:59 2012
@@ -17,20 +17,23 @@
* under the License.
*/
+package org.apache.isis.runtimes.dflt.objectstores.jdo.applib.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
/**
- * Defines interfaces for domain objects that constitute the framework's
- * view of a "user profile".
+ * Indicates that the entity is auditable.
*
* <p>
- * Each user can hold a single {@link org.apache.isis.applib.profiles.Profile},
- * which in turn can hold option settings (eg preferred colour theme) and
- * {@link org.apache.isis.applib.profiles.Perspective}s (a particular
- * arrangement of the user interface; the terminology comes from the Eclipse
- * RCP/IDE platform).
- *
- * <p>
- * The use and surfacing of these capabilities is dependent on the viewer;
- * most notably the drag-n-drop viewer does support the concept of a user
- * profile, but many others do not.
+ * Alternatively, the type can implement the
+ * {@link org.apache.isis.runtimes.dflt.objectstores.jdo.applib.Auditable Auditable} marker interface.
*/
-package org.apache.isis.applib.maybe;
\ No newline at end of file
+@Inherited
+@Target({ ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Auditable {
+}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java Wed Aug 22 09:21:59 2012
@@ -1,13 +1,17 @@
package org.apache.isis.runtimes.dflt.objectstores.jdo.datanucleus;
+import java.util.List;
import java.util.Map;
+import javax.annotation.Nullable;
+
import org.apache.isis.core.commons.components.Installer;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.runtimes.dflt.bytecode.identity.objectfactory.ObjectFactoryBasic;
+import org.apache.isis.runtimes.dflt.objectstores.jdo.applib.AuditService;
import org.apache.isis.runtimes.dflt.objectstores.jdo.datanucleus.persistence.adaptermanager.DataNucleusPojoRecreator;
import org.apache.isis.runtimes.dflt.objectstores.jdo.datanucleus.persistence.spi.DataNucleusIdentifierGenerator;
import org.apache.isis.runtimes.dflt.objectstores.jdo.datanucleus.persistence.spi.DataNucleusSimplePersistAlgorithm;
@@ -20,9 +24,15 @@ import org.apache.isis.runtimes.dflt.run
import org.apache.isis.runtimes.dflt.runtime.system.persistence.AdapterManagerSpi;
import org.apache.isis.runtimes.dflt.runtime.system.persistence.IdentifierGenerator;
import org.apache.isis.runtimes.dflt.runtime.system.persistence.ObjectFactory;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.runtimes.dflt.runtime.system.transaction.EnlistedObjectDirtying;
import org.apache.isis.runtimes.dflt.runtime.system.transaction.IsisTransactionManager;
+import com.google.common.base.Optional;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+
/**
* Configuration files are read in the usual fashion (as per {@link Installer#getConfigurationResources()}, ie will consult all of:
* <ul>
@@ -42,10 +52,23 @@ import org.apache.isis.runtimes.dflt.run
*/
public class DataNucleusPersistenceMechanismInstaller extends PersistenceMechanismInstallerAbstract {
+ private static final Predicate<Object> LOCATE_AUDIT_SERVICE = new Predicate<Object>() {
+
+ @Override
+ public boolean apply(Object input) {
+ return input instanceof AuditService;
+ }
+ };
+
public static final String NAME = "datanucleus";
private static final String ISIS_CONFIG_PREFIX = "isis.persistor.datanucleus.impl";
private DataNucleusApplicationComponents applicationComponents = null;
+
+ // only search once
+ private boolean searchedForAuditService;
+ @Nullable
+ private AuditService auditService;
public DataNucleusPersistenceMechanismInstaller() {
super(NAME);
@@ -69,13 +92,32 @@ public class DataNucleusPersistenceMecha
}
@Override
+ public PersistenceSession createPersistenceSession(PersistenceSessionFactory persistenceSessionFactory) {
+ PersistenceSession persistenceSession = super.createPersistenceSession(persistenceSessionFactory);
+ searchAndCacheAuditServiceIfNotAlreadyDoneSo(persistenceSessionFactory);
+ return persistenceSession;
+ }
+
+ private void searchAndCacheAuditServiceIfNotAlreadyDoneSo(PersistenceSessionFactory persistenceSessionFactory) {
+ if(searchedForAuditService) {
+ return;
+ }
+ List<Object> services = persistenceSessionFactory.getServices();
+ final Optional<Object> optionalService = Iterables.tryFind(services, LOCATE_AUDIT_SERVICE);
+ if(optionalService.isPresent()) {
+ auditService = (AuditService) optionalService.get();
+ }
+ searchedForAuditService = true;
+ }
+
+ @Override
protected IdentifierGenerator createIdentifierGenerator(IsisConfiguration configuration) {
return new DataNucleusIdentifierGenerator();
}
@Override
protected IsisTransactionManager createTransactionManager(final EnlistedObjectDirtying persistor, final TransactionalResource objectStore) {
- return new DataNucleusTransactionManager(persistor, objectStore);
+ return new DataNucleusTransactionManager(persistor, objectStore, auditService);
}
@Override
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/persistence/spi/DataNucleusTransaction.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/persistence/spi/DataNucleusTransaction.java?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/persistence/spi/DataNucleusTransaction.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/persistence/spi/DataNucleusTransaction.java Wed Aug 22 09:21:59 2012
@@ -1,15 +1,16 @@
package org.apache.isis.runtimes.dflt.objectstores.jdo.datanucleus.persistence.spi;
import java.util.Map.Entry;
-import java.util.Date;
import java.util.Set;
+import javax.annotation.Nullable;
+
import org.apache.isis.applib.clock.Clock;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.runtimes.dflt.objectstores.jdo.applib.AuditService;
-import org.apache.isis.runtimes.dflt.objectstores.jdo.applib.Auditable;
+import org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.auditable.AuditableFacet;
import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.TransactionalResource;
import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
import org.apache.isis.runtimes.dflt.runtime.system.transaction.IsisTransaction;
@@ -19,15 +20,21 @@ import org.apache.isis.runtimes.dflt.run
public class DataNucleusTransaction extends IsisTransaction {
- private AuditService auditService;
+ @Nullable
+ private final AuditService auditService;
- public DataNucleusTransaction(IsisTransactionManager transactionManager, MessageBroker messageBroker, UpdateNotifier updateNotifier, TransactionalResource objectStore) {
+ public DataNucleusTransaction(
+ final IsisTransactionManager transactionManager,
+ final MessageBroker messageBroker,
+ final UpdateNotifier updateNotifier,
+ final TransactionalResource objectStore,
+ @Nullable final AuditService auditService) {
super(transactionManager, messageBroker, updateNotifier, objectStore);
+ this.auditService = auditService;
}
-
@Override
- protected void doAudit(Set<Entry<AdapterAndProperty, PreAndPostValues>> auditEntries) {
+ protected void doAudit(final Set<Entry<AdapterAndProperty, PreAndPostValues>> auditEntries) {
if(auditService == null) {
super.doAudit(auditEntries);
return;
@@ -46,8 +53,7 @@ public class DataNucleusTransaction exte
private void audit(final String currentUser, final long currentTimestampEpoch, final Entry<AdapterAndProperty, PreAndPostValues> auditEntry) {
final AdapterAndProperty aap = auditEntry.getKey();
final ObjectAdapter adapter = aap.getAdapter();
- final Object pojo = adapter.getObject();
- if(!(pojo instanceof Auditable)) {
+ if(!adapter.getSpecification().containsFacet(AuditableFacet.class)) {
return;
}
final RootOid oid = (RootOid) adapter.getOid();
@@ -68,9 +74,4 @@ public class DataNucleusTransaction exte
return IsisContext.getAuthenticationSession();
}
-
- public void usingAuditService(AuditService auditService) {
- this.auditService = auditService;
- }
-
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/persistence/spi/DataNucleusTransactionManager.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/persistence/spi/DataNucleusTransactionManager.java?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/persistence/spi/DataNucleusTransactionManager.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/persistence/spi/DataNucleusTransactionManager.java Wed Aug 22 09:21:59 2012
@@ -1,44 +1,31 @@
package org.apache.isis.runtimes.dflt.objectstores.jdo.datanucleus.persistence.spi;
-import java.util.List;
+import javax.annotation.Nullable;
import org.apache.isis.runtimes.dflt.objectstores.jdo.applib.AuditService;
import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.TransactionalResource;
-import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
import org.apache.isis.runtimes.dflt.runtime.system.transaction.EnlistedObjectDirtying;
import org.apache.isis.runtimes.dflt.runtime.system.transaction.IsisTransaction;
import org.apache.isis.runtimes.dflt.runtime.system.transaction.IsisTransactionManager;
import org.apache.isis.runtimes.dflt.runtime.system.transaction.MessageBroker;
import org.apache.isis.runtimes.dflt.runtime.system.transaction.UpdateNotifier;
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-
public class DataNucleusTransactionManager extends IsisTransactionManager {
+
+ @Nullable
+ private final AuditService auditService;
- private static final Predicate<Object> AUDIT_SERVICE = new Predicate<Object>() {
-
- @Override
- public boolean apply(Object input) {
- return input instanceof AuditService;
- }
- };
-
- public DataNucleusTransactionManager(EnlistedObjectDirtying objectPersistor, TransactionalResource objectStore) {
+ public DataNucleusTransactionManager(
+ final EnlistedObjectDirtying objectPersistor,
+ final TransactionalResource objectStore,
+ @Nullable final AuditService auditService) {
super(objectPersistor, objectStore);
+ this.auditService = auditService;
}
@Override
- protected IsisTransaction createTransaction(MessageBroker messageBroker, UpdateNotifier updateNotifier) {
- DataNucleusTransaction transaction = new DataNucleusTransaction(this, messageBroker, updateNotifier, getTransactionalResource());
- List<Object> services = IsisContext.getServices();
- Optional<Object> optionalService = Iterables.tryFind(services, AUDIT_SERVICE);
- if(optionalService.isPresent()) {
- AuditService service = (AuditService) optionalService.get();
- transaction.usingAuditService(service);
- }
- return transaction;
+ protected IsisTransaction createTransaction(final MessageBroker messageBroker, final UpdateNotifier updateNotifier) {
+ return new DataNucleusTransaction(this, messageBroker, updateNotifier, getTransactionalResource(), auditService);
}
}
Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableAnnotationFacetFactory.java (from r1375288, incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/version/OptionalFacetDerivedFromJdoVersionAnnotation.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableAnnotationFacetFactory.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableAnnotationFacetFactory.java&p1=incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/version/OptionalFacetDerivedFromJdoVersionAnnotation.java&r1=1375288&r2=1375952&rev=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/version/OptionalFacetDerivedFromJdoVersionAnnotation.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableAnnotationFacetFactory.java Wed Aug 22 09:21:59 2012
@@ -16,36 +16,32 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.version;
+package org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.auditable;
-import javax.jdo.annotations.Version;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.mandatory.MandatoryFacetDefault;
-import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacet;
-
-
-/**
- * Derived by presence of {@link Version}.
- *
- * <p>
- * By default mandatory properties are initialized using the
- * {@link PropertyDefaultFacet} facet. We don't want this, so this facet marks
- * the property as optional, meaning that the {@link Version} property is left
- * untouched by Isis.
- *
- * @see OptionalFacetDerivedFromJpaIdAnnotation
- */
-public class OptionalFacetDerivedFromJdoVersionAnnotation extends
- MandatoryFacetDefault {
+import org.apache.isis.core.metamodel.facetapi.FacetUtil;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.AnnotationBasedFacetFactoryAbstract;
+import org.apache.isis.runtimes.dflt.objectstores.jdo.applib.annotations.Auditable;
+
+
+public class AuditableAnnotationFacetFactory extends
+ AnnotationBasedFacetFactoryAbstract {
- public OptionalFacetDerivedFromJdoVersionAnnotation(final FacetHolder holder) {
- super(holder);
+ public AuditableAnnotationFacetFactory() {
+ super(FeatureType.OBJECTS_ONLY);
}
@Override
- public boolean isInvertedSemantics() {
- return true;
+ public void process(ProcessClassContext processClassContext) {
+ final Class<?> cls = processClassContext.getCls();
+ final Auditable annotation = getAnnotation(cls, Auditable.class);
+ if (annotation == null) {
+ return;
+ }
+ FacetUtil.addFacet(new AuditableFacetAnnotation(
+ processClassContext.getFacetHolder()));
+ return;
}
Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacet.java (from r1375288, incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacet.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacet.java&p1=incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java&r1=1375288&r2=1375952&rev=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacet.java Wed Aug 22 09:21:59 2012
@@ -16,11 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
+package org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.auditable;
-package org.apache.isis.core.metamodel.adapter;
-public interface DomainObjectServicesAware {
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.runtimes.dflt.objectstores.jdo.applib.annotations.Auditable;
- public void setDomainObjectServices(DomainObjectServices domainObjectServices);
+
+/**
+ * Corresponds to annotating the class with the {@link Auditable} annotation.
+ */
+public interface AuditableFacet extends Facet {
}
Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetAbstract.java (from r1375288, incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/version/DisabledFacetDerivedFromJdoVersionAnnotation.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetAbstract.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetAbstract.java&p1=incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/version/DisabledFacetDerivedFromJdoVersionAnnotation.java&r1=1375288&r2=1375952&rev=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/version/DisabledFacetDerivedFromJdoVersionAnnotation.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetAbstract.java Wed Aug 22 09:21:59 2012
@@ -16,21 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.version;
+package org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.auditable;
+
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.When;
-import org.apache.isis.core.progmodel.facets.members.disable.DisabledFacetImpl;
-/**
- * Derived from being {@link Transient}.
- */
-public class DisabledFacetDerivedFromJdoVersionAnnotation extends
- DisabledFacetImpl {
+public abstract class AuditableFacetAbstract extends FacetAbstract implements
+ AuditableFacet {
+
+
+ public static Class<? extends Facet> type() {
+ return AuditableFacet.class;
+ }
- public DisabledFacetDerivedFromJdoVersionAnnotation(final FacetHolder holder) {
- super(When.ALWAYS, holder);
+ public AuditableFacetAbstract(FacetHolder facetHolder) {
+ super(AuditableFacetAbstract.type(), facetHolder, false);
}
}
Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotation.java (from r1375288, incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/version/DisabledFacetDerivedFromJdoVersionAnnotation.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotation.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotation.java&p1=incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/version/DisabledFacetDerivedFromJdoVersionAnnotation.java&r1=1375288&r2=1375952&rev=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/version/DisabledFacetDerivedFromJdoVersionAnnotation.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotation.java Wed Aug 22 09:21:59 2012
@@ -16,21 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.version;
+package org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.auditable;
+
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.When;
-import org.apache.isis.core.progmodel.facets.members.disable.DisabledFacetImpl;
-/**
- * Derived from being {@link Transient}.
- */
-public class DisabledFacetDerivedFromJdoVersionAnnotation extends
- DisabledFacetImpl {
+public class AuditableFacetAnnotation extends AuditableFacetImpl {
- public DisabledFacetDerivedFromJdoVersionAnnotation(final FacetHolder holder) {
- super(When.ALWAYS, holder);
+ public AuditableFacetAnnotation(FacetHolder facetHolder) {
+ super(facetHolder);
}
}
Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetImpl.java (from r1375288, incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetImpl.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetImpl.java&p1=incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java&r1=1375288&r2=1375952&rev=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetImpl.java Wed Aug 22 09:21:59 2012
@@ -16,11 +16,15 @@
* specific language governing permissions and limitations
* under the License.
*/
+package org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.auditable;
-package org.apache.isis.core.metamodel.adapter;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-public interface DomainObjectServicesAware {
- public void setDomainObjectServices(DomainObjectServices domainObjectServices);
+public class AuditableFacetImpl extends AuditableFacetAbstract {
+
+ public AuditableFacetImpl(FacetHolder facetHolder) {
+ super(facetHolder);
+ }
}
Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterface.java (from r1375288, incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterface.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterface.java&p1=incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java&r1=1375288&r2=1375952&rev=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/DomainObjectServicesAware.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterface.java Wed Aug 22 09:21:59 2012
@@ -16,11 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
+package org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.auditable;
-package org.apache.isis.core.metamodel.adapter;
-public interface DomainObjectServicesAware {
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
- public void setDomainObjectServices(DomainObjectServices domainObjectServices);
+
+public class AuditableFacetMarkerInterface extends AuditableFacetImpl {
+
+ public AuditableFacetMarkerInterface(FacetHolder facetHolder) {
+ super(facetHolder);
+ }
}
Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceFacetFactory.java (from r1375288, incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/object/immutable/markerifc/ImmutableMarkerInterfacesFacetFactory.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceFacetFactory.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceFacetFactory.java&p1=incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/object/immutable/markerifc/ImmutableMarkerInterfacesFacetFactory.java&r1=1375288&r2=1375952&rev=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/object/immutable/markerifc/ImmutableMarkerInterfacesFacetFactory.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceFacetFactory.java Wed Aug 22 09:21:59 2012
@@ -16,30 +16,31 @@
* specific language governing permissions and limitations
* under the License.
*/
+package org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.auditable;
-package org.apache.isis.core.progmodel.facets.object.immutable.markerifc;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.When;
-import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
+import org.apache.isis.core.metamodel.facets.AnnotationBasedFacetFactoryAbstract;
+import org.apache.isis.runtimes.dflt.objectstores.jdo.applib.Auditable;
-public class ImmutableMarkerInterfacesFacetFactory extends FacetFactoryAbstract {
- public ImmutableMarkerInterfacesFacetFactory() {
+public class AuditableMarkerInterfaceFacetFactory extends
+ AnnotationBasedFacetFactoryAbstract {
+
+ public AuditableMarkerInterfaceFacetFactory() {
super(FeatureType.OBJECTS_ONLY);
}
@Override
- public void process(final ProcessClassContext processClassContaxt) {
- final When when = When.forCorrespondingMarkerSubType(processClassContaxt.getCls());
- FacetUtil.addFacet(create(when, processClassContaxt.getFacetHolder()));
+ public void process(ProcessClassContext processClassContext) {
+ final Class<?> cls = processClassContext.getCls();
+ if(!Auditable.class.isAssignableFrom(cls)) {
+ return;
+ }
+ FacetUtil.addFacet(new AuditableFacetMarkerInterface(
+ processClassContext.getFacetHolder()));
}
- private ImmutableFacet create(final When when, final FacetHolder holder) {
- return when == null ? null : new ImmutableFacetMarkerInterface(when, holder);
- }
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/prop/primarykey/OptionalFacetDerivedFromJdoPrimaryKeyAnnotation.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/prop/primarykey/OptionalFacetDerivedFromJdoPrimaryKeyAnnotation.java?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/prop/primarykey/OptionalFacetDerivedFromJdoPrimaryKeyAnnotation.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/prop/primarykey/OptionalFacetDerivedFromJdoPrimaryKeyAnnotation.java Wed Aug 22 09:21:59 2012
@@ -23,7 +23,6 @@ import javax.jdo.annotations.PrimaryKey;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.mandatory.MandatoryFacetDefault;
import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacet;
-import org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.version.OptionalFacetDerivedFromJdoVersionAnnotation;
/**
@@ -34,8 +33,6 @@ import org.apache.isis.runtimes.dflt.obj
* {@link PropertyDefaultFacet} facet. We don't want this, so this facet marks
* the property as optional, meaning that the {@link PrimaryKey} property is left
* untouched by Isis.
- *
- * @see OptionalFacetDerivedFromJdoVersionAnnotation
*/
public class OptionalFacetDerivedFromJdoPrimaryKeyAnnotation extends
MandatoryFacetDefault {
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/specloader/progmodelfacets/JdoProgrammingModelFacets.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/specloader/progmodelfacets/JdoProgrammingModelFacets.java?rev=1375952&r1=1375951&r2=1375952&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/specloader/progmodelfacets/JdoProgrammingModelFacets.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/main/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/specloader/progmodelfacets/JdoProgrammingModelFacets.java Wed Aug 22 09:21:59 2012
@@ -20,6 +20,8 @@ package org.apache.isis.runtimes.dflt.ob
import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
+import org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.auditable.AuditableAnnotationFacetFactory;
+import org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.auditable.AuditableMarkerInterfaceFacetFactory;
import org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityAnnotationFacetFactory;
import org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.discriminator.JdoDiscriminatorAnnotationFacetFactory;
import org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.embeddedonly.JdoEmbeddedOnlyAnnotationFacetFactory;
@@ -45,8 +47,10 @@ public class JdoProgrammingModelFacets e
addFactory(JdoPrimaryKeyAnnotationFacetFactory.class);
addFactory(JdoDiscriminatorAnnotationFacetFactory.class);
- //addFactory(JdoVersionAnnotationFacetFactory.class);
addFactory(JdoQueryAnnotationFacetFactory.class);
+
+ addFactory(AuditableAnnotationFacetFactory.class);
+ addFactory(AuditableMarkerInterfaceFacetFactory.class);
}
}
Added: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java?rev=1375952&view=auto
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java (added)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-metamodel/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java Wed Aug 22 09:21:59 2012
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.runtimes.dflt.objectstores.jdo.metamodel.facets.object.auditable;
+
+import java.util.List;
+
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.PersistenceCapable;
+
+import junit.framework.Assert;
+
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.FacetFactory;
+import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryTest;
+import org.apache.isis.runtimes.dflt.objectstores.jdo.applib.annotations.Auditable;
+import org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableAnnotationFacetFactory;
+import org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
+import org.apache.isis.runtimes.dflt.objectstores.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacetAnnotation;
+
+
+public class GivenAuditableAnnotationFacetFactoryTest extends
+ AbstractFacetFactoryTest {
+
+ private AuditableAnnotationFacetFactory facetFactory;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ facetFactory = new AuditableAnnotationFacetFactory();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ facetFactory = null;
+ super.tearDown();
+ }
+
+ public void testFeatureTypes() {
+ final List<FeatureType> featureTypes = facetFactory
+ .getFeatureTypes();
+ Assert.assertTrue(contains(featureTypes, FeatureType.OBJECT));
+ assertFalse(contains(featureTypes, FeatureType.PROPERTY));
+ assertFalse(contains(featureTypes, FeatureType.COLLECTION));
+ Assert.assertFalse(contains(featureTypes, FeatureType.ACTION));
+ assertFalse(contains(featureTypes,
+ FeatureType.ACTION_PARAMETER));
+ }
+
+ public void testAuditableAnnotationPickedUpOnClass() {
+ @Auditable
+ class Customer {
+ }
+
+ facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
+
+ final Facet facet = facetHolder.getFacet(AuditableFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof AuditableFacetAnnotation);
+ }
+
+ public void testIfNoAuditableAnnotationThenNoFacet() {
+
+ class Customer {
+ }
+
+ facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
+
+ final Facet facet = facetHolder.getFacet(AuditableFacet.class);
+ assertNull(facet);
+ }
+
+
+ public void testNoMethodsRemoved() {
+ @PersistenceCapable
+ class Customer {
+ }
+
+ facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
+
+ assertNoMethodsRemoved();
+ }
+}