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 2013/02/01 18:31:19 UTC
[3/3] git commit: ISIS-323: first cut
Updated Branches:
refs/heads/dan/ISIS-323 [created] 1f558615a
ISIS-323: first cut
* can publish objects, very simply
* no JTA stuff yet
* cannot publish actions yet (need a ThreadLocal)
* a few unit tests wouldn't go amiss...
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/1f558615
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/1f558615
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/1f558615
Branch: refs/heads/dan/ISIS-323
Commit: 1f558615a0a223fed40ee8dd7ee0e53424bfbe02
Parents: 56c1fbd
Author: Dan Haywood <da...@apache.org>
Authored: Fri Feb 1 17:28:25 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Fri Feb 1 17:28:25 2013 +0000
----------------------------------------------------------------------
.../jdo/applib/annotations/Auditable.java | 7 +-
.../isis/objectstore/jdo/applib/AuditService.java | 11 +-
.../jdo/applib/AuditServiceLogging.java | 13 +-
.../isis/objectstore/jdo/applib/Auditable.java | 6 +-
.../DataNucleusPersistenceMechanismInstaller.java | 63 +---
.../persistence/spi/DataNucleusTransaction.java | 92 ----
.../spi/DataNucleusTransactionManager.java | 46 --
.../auditable/AuditableAnnotationFacetFactory.java | 48 ---
...AuditableAnnotationInJdoApplibFacetFactory.java | 53 +++
.../facets/object/auditable/AuditableFacet.java | 31 --
.../object/auditable/AuditableFacetAbstract.java | 39 --
.../object/auditable/AuditableFacetAnnotation.java | 31 --
.../AuditableFacetAnnotationInJdoApplib.java | 33 ++
.../object/auditable/AuditableFacetImpl.java | 30 --
.../auditable/AuditableFacetMarkerInterface.java | 31 --
.../AuditableFacetMarkerInterfaceInJdoApplib.java | 32 ++
.../AuditableMarkerInterfaceFacetFactory.java | 45 --
...ableMarkerInterfaceInJdoApplibFacetFactory.java | 49 +++
.../GivenAuditableAnnotationFacetFactoryTest.java | 10 +-
...enAuditableMarkerInterfaceFacetFactoryTest.java | 10 +-
.../org/apache/isis/applib/annotation/Audited.java | 47 ++
.../isis/applib/annotation/PublishedAction.java | 47 ++
.../isis/applib/annotation/PublishedObject.java | 50 +++
.../org/apache/isis/applib/marker/Auditable.java | 39 ++
.../applib/services/audit/AuditingService.java | 38 ++
.../applib/services/publish/CanonicalEvent.java | 29 ++
.../applib/services/publish/PublishingService.java | 41 ++
.../isis/core/metamodel/facets/FacetFactory.java | 3 +
.../actions/publish/PublishedActionFacet.java | 31 ++
.../publish/PublishedActionFacetAbstract.java | 37 ++
.../facets/object/audit/AuditableFacet.java | 31 ++
.../object/audit/AuditableFacetAbstract.java | 39 ++
.../facets/object/audit/AuditableFacetImpl.java | 30 ++
.../AuditableAnnotationFacetFactory.java | 48 +++
.../audit/annotation/AuditableFacetAnnotation.java | 32 ++
.../markerifc/AuditableFacetMarkerInterface.java | 33 ++
.../AuditableMarkerInterfaceFacetFactory.java | 45 ++
.../object/publish/PublishedObjectFacet.java | 34 ++
.../publish/PublishedObjectFacetAbstract.java | 37 ++
.../PublishedActionAnnotationFacetFactory.java | 60 +++
.../publish/PublishedActionFacetAnnotation.java | 32 ++
.../PublishedObjectAnnotationFacetFactory.java | 60 +++
.../publish/PublishedObjectFacetAnnotation.java | 36 ++
.../dflt/ProgrammingModelFacetsJava5.java | 11 +
.../PersistenceMechanismInstallerAbstract.java | 147 ++++++-
.../PersistenceSessionFactoryDelegating.java | 5 +-
.../system/transaction/IsisTransaction.java | 152 ++++++-
.../system/transaction/IsisTransactionManager.java | 24 +-
.../PublishingServiceWithCanonicalizers.java | 39 ++
.../PersistenceSessionObjectStoreTest.java | 10 +-
...ectStoreTransactionManagerAbstractTestCase.java | 67 ---
...StoreTransactionManager_EndTransactionTest.java | 41 ++-
...tStoreTransactionManager_InstantiationTest.java | 31 ++-
...oreTransactionManager_StartTransactionTest.java | 41 ++-
.../objectstore/transaction/TransactionTest.java | 323 --------------
.../system/transaction/IsisTransactionTest.java | 330 +++++++++++++++
.../dom/src/main/java/dom/todo/ToDoItem.java | 8 +-
.../src/main/webapp/WEB-INF/isis.properties | 4 +-
58 files changed, 1852 insertions(+), 940 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/core/objectstore/jdo/applib/annotations/Auditable.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/core/objectstore/jdo/applib/annotations/Auditable.java b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/core/objectstore/jdo/applib/annotations/Auditable.java
index 09d0d87..6124860 100644
--- a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/core/objectstore/jdo/applib/annotations/Auditable.java
+++ b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/core/objectstore/jdo/applib/annotations/Auditable.java
@@ -26,12 +26,9 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
- * Indicates that the entity is auditable.
- *
- * <p>
- * Alternatively, the type can implement the
- * {@link org.apache.isis.objectstore.jdo.applib.Auditable Auditable} marker interface.
+ * @deprecated use the {@link org.apache.isis.applib.marker.Auditable the applib Auditable} annotation instead.
*/
+@Deprecated
@Inherited
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/AuditService.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/AuditService.java b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/AuditService.java
index b5a3a3a..d823658 100644
--- a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/AuditService.java
+++ b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/AuditService.java
@@ -18,11 +18,10 @@
*/
package org.apache.isis.objectstore.jdo.applib;
-import org.apache.isis.applib.annotation.Hidden;
-public interface AuditService {
-
- @Hidden
- public void audit(String user, long currentTimestampEpoch, String objectType, String identifier, String preValue, String postValue);
-
+/**
+ * @deprecated use the {@link org.apache.isis.applib.services.audit.AuditingService the applib AuditService} instead.
+ */
+@Deprecated
+public interface AuditService extends org.apache.isis.applib.services.audit.AuditingService {
}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/AuditServiceLogging.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/AuditServiceLogging.java b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/AuditServiceLogging.java
index a2e6ca4..3e394da 100644
--- a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/AuditServiceLogging.java
+++ b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/AuditServiceLogging.java
@@ -18,18 +18,19 @@
*/
package org.apache.isis.objectstore.jdo.applib;
-import org.apache.isis.applib.AbstractFactoryAndRepository;
import org.apache.isis.applib.annotation.Hidden;
import org.apache.log4j.Logger;
-public class AuditServiceLogging extends AbstractFactoryAndRepository implements AuditService {
-
- private static Logger LOG = Logger.getLogger(AuditServiceLogging.class);
+
+@SuppressWarnings("deprecation")
+public class AuditServiceLogging implements AuditService {
+
+ private final static Logger LOG = Logger.getLogger(AuditServiceLogging.class);
@Hidden
public void audit(String user, long currentTimestampEpoch, String objectType, String identifier, String preValue, String postValue) {
- String auditMessage = objectType + ":" + identifier + " by " + user + ": " + preValue + " -> " + postValue;
+ String auditMessage = objectType + ":" + identifier + " by " + user + ": " + preValue + " -> " + postValue;
LOG.info(auditMessage);
}
-
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/Auditable.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/Auditable.java b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/Auditable.java
index a06eaa0..8035bfd 100644
--- a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/Auditable.java
+++ b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/Auditable.java
@@ -19,8 +19,8 @@
package org.apache.isis.objectstore.jdo.applib;
/**
- * Marker interface to indicate that an entity should be audited.
+ * @deprecated use the {@link org.apache.isis.applib.marker.Auditable the applib Auditable} marker interface instead.
*/
-public interface Auditable {
-
+@Deprecated
+public interface Auditable extends org.apache.isis.applib.marker.Auditable {
}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
index 9a0173c..96982f3 100644
--- a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
+++ b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
@@ -18,13 +18,8 @@
*/
package org.apache.isis.objectstore.jdo.datanucleus;
-import java.util.List;
import java.util.Map;
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-
import org.apache.isis.core.commons.components.Installer;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
@@ -38,23 +33,16 @@ import org.apache.isis.core.runtime.bytecode.identity.ObjectFactoryBasic;
import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstallerAbstract;
import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
import org.apache.isis.core.runtime.persistence.objectstore.algorithm.PersistAlgorithm;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.TransactionalResource;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.persistence.AdapterManagerSpi;
import org.apache.isis.core.runtime.system.persistence.IdentifierGenerator;
import org.apache.isis.core.runtime.system.persistence.ObjectFactory;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
-import org.apache.isis.core.runtime.system.transaction.EnlistedObjectDirtying;
-import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
-import org.apache.isis.objectstore.jdo.applib.AuditService;
import org.apache.isis.objectstore.jdo.datanucleus.bytecode.DataNucleusTypesClassSubstitutor;
import org.apache.isis.objectstore.jdo.datanucleus.persistence.adaptermanager.DataNucleusPojoRecreator;
import org.apache.isis.objectstore.jdo.datanucleus.persistence.spi.DataNucleusIdentifierGenerator;
import org.apache.isis.objectstore.jdo.datanucleus.persistence.spi.DataNucleusSimplePersistAlgorithm;
-import org.apache.isis.objectstore.jdo.datanucleus.persistence.spi.DataNucleusTransactionManager;
-import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableAnnotationFacetFactory;
-import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableMarkerInterfaceFacetFactory;
+import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableAnnotationInJdoApplibFacetFactory;
+import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableMarkerInterfaceInJdoApplibFacetFactory;
import org.apache.isis.objectstore.jdo.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityAnnotationFacetFactory;
import org.apache.isis.objectstore.jdo.metamodel.facets.object.discriminator.JdoDiscriminatorAnnotationFacetFactory;
import org.apache.isis.objectstore.jdo.metamodel.facets.object.embeddedonly.JdoEmbeddedOnlyAnnotationFacetFactory;
@@ -63,10 +51,6 @@ import org.apache.isis.objectstore.jdo.metamodel.facets.object.query.JdoQueryAnn
import org.apache.isis.objectstore.jdo.metamodel.facets.prop.primarykey.JdoPrimaryKeyAnnotationFacetFactory;
import org.apache.isis.objectstore.jdo.metamodel.specloader.validator.JdoMetaModelValidator;
-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>
@@ -86,22 +70,12 @@ import com.google.common.collect.Iterables;
*/
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;
- private AuditService auditService;
public DataNucleusPersistenceMechanismInstaller() {
super(NAME);
@@ -156,29 +130,6 @@ public class DataNucleusPersistenceMechanismInstaller extends PersistenceMechani
}
////////////////////////////////////////////////////////////////////////
- // createPersistenceSession
- ////////////////////////////////////////////////////////////////////////
-
- @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;
- }
-
- ////////////////////////////////////////////////////////////////////////
// PersistenceSessionFactoryDelegate impl
////////////////////////////////////////////////////////////////////////
@@ -213,8 +164,8 @@ public class DataNucleusPersistenceMechanismInstaller extends PersistenceMechani
baseProgrammingModel.addFactory(JdoQueryAnnotationFacetFactory.class);
- baseProgrammingModel.addFactory(AuditableAnnotationFacetFactory.class);
- baseProgrammingModel.addFactory(AuditableMarkerInterfaceFacetFactory.class);
+ baseProgrammingModel.addFactory(AuditableAnnotationInJdoApplibFacetFactory.class);
+ baseProgrammingModel.addFactory(AuditableMarkerInterfaceInJdoApplibFacetFactory.class);
}
private void addDataNucleusFacetFactoriesTo(ProgrammingModel baseProgrammingModel) {
@@ -229,11 +180,6 @@ public class DataNucleusPersistenceMechanismInstaller extends PersistenceMechani
@Override
- protected IsisTransactionManager createTransactionManager(final EnlistedObjectDirtying persistor, final TransactionalResource objectStore) {
- return new DataNucleusTransactionManager(persistor, objectStore, auditService);
- }
-
- @Override
public ObjectFactory createObjectFactory(IsisConfiguration configuration) {
return new ObjectFactoryBasic();
}
@@ -245,7 +191,6 @@ public class DataNucleusPersistenceMechanismInstaller extends PersistenceMechani
-
////////////////////////////////////////////////////////////////////////
// Dependencies
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/DataNucleusTransaction.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/DataNucleusTransaction.java b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/DataNucleusTransaction.java
deleted file mode 100644
index 4427f7d..0000000
--- a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/DataNucleusTransaction.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * 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.objectstore.jdo.datanucleus.persistence.spi;
-
-import java.util.Map.Entry;
-import java.util.Set;
-
-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.core.runtime.persistence.objectstore.transaction.TransactionalResource;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
-import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
-import org.apache.isis.core.runtime.system.transaction.MessageBroker;
-import org.apache.isis.core.runtime.system.transaction.UpdateNotifier;
-import org.apache.isis.objectstore.jdo.applib.AuditService;
-import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableFacet;
-
-public class DataNucleusTransaction extends IsisTransaction {
-
- private final AuditService auditService;
-
- public DataNucleusTransaction(
- final IsisTransactionManager transactionManager,
- final MessageBroker messageBroker,
- final UpdateNotifier updateNotifier,
- final TransactionalResource objectStore,
- final AuditService auditService) {
- super(transactionManager, messageBroker, updateNotifier, objectStore);
- this.auditService = auditService;
- }
-
- @Override
- protected void doAudit(final Set<Entry<AdapterAndProperty, PreAndPostValues>> auditEntries) {
- if(auditService == null) {
- super.doAudit(auditEntries);
- return;
- }
- final String currentUser = getAuthenticationSession().getUserName();
- final long currentTimestampEpoch = currentTimestampEpoch();
- for (Entry<AdapterAndProperty, PreAndPostValues> auditEntry : auditEntries) {
- audit(currentUser, currentTimestampEpoch, auditEntry);
- }
- }
-
- private long currentTimestampEpoch() {
- return Clock.getTime();
- }
-
- private void audit(final String currentUser, final long currentTimestampEpoch, final Entry<AdapterAndProperty, PreAndPostValues> auditEntry) {
- final AdapterAndProperty aap = auditEntry.getKey();
- final ObjectAdapter adapter = aap.getAdapter();
- if(!adapter.getSpecification().containsFacet(AuditableFacet.class)) {
- return;
- }
- final RootOid oid = (RootOid) adapter.getOid();
- final String objectType = oid.getObjectSpecId().asString();
- final String identifier = oid.getIdentifier();
- final PreAndPostValues papv = auditEntry.getValue();
- final String preValue = asString(papv.getPre());
- final String postValue = asString(papv.getPost());
- auditService.audit(currentUser, currentTimestampEpoch, objectType, identifier, preValue, postValue);
- }
-
- private static String asString(Object object) {
- return object != null? object.toString(): null;
- }
-
-
- protected AuthenticationSession getAuthenticationSession() {
- return IsisContext.getAuthenticationSession();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/DataNucleusTransactionManager.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/DataNucleusTransactionManager.java b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/DataNucleusTransactionManager.java
deleted file mode 100644
index b6d50fc..0000000
--- a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/DataNucleusTransactionManager.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.objectstore.jdo.datanucleus.persistence.spi;
-
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.TransactionalResource;
-import org.apache.isis.core.runtime.system.transaction.EnlistedObjectDirtying;
-import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
-import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
-import org.apache.isis.core.runtime.system.transaction.MessageBroker;
-import org.apache.isis.core.runtime.system.transaction.UpdateNotifier;
-import org.apache.isis.objectstore.jdo.applib.AuditService;
-
-public class DataNucleusTransactionManager extends IsisTransactionManager {
-
- private final AuditService auditService;
-
- public DataNucleusTransactionManager(
- final EnlistedObjectDirtying objectPersistor,
- final TransactionalResource objectStore,
- final AuditService auditService) {
- super(objectPersistor, objectStore);
- this.auditService = auditService;
- }
-
- @Override
- protected IsisTransaction createTransaction(final MessageBroker messageBroker, final UpdateNotifier updateNotifier) {
- return new DataNucleusTransaction(this, messageBroker, updateNotifier, getTransactionalResource(), auditService);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationFacetFactory.java b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationFacetFactory.java
deleted file mode 100644
index 44c4ec3..0000000
--- a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationFacetFactory.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.objectstore.jdo.metamodel.facets.object.auditable;
-
-
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.Annotations;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.objectstore.jdo.applib.annotations.Auditable;
-
-
-public class AuditableAnnotationFacetFactory extends FacetFactoryAbstract {
-
- public AuditableAnnotationFacetFactory() {
- super(FeatureType.OBJECTS_ONLY);
- }
-
- @Override
- public void process(ProcessClassContext processClassContext) {
- final Class<?> cls = processClassContext.getCls();
- final Auditable annotation = Annotations.getAnnotation(cls, Auditable.class);
- if (annotation == null) {
- return;
- }
- FacetUtil.addFacet(new AuditableFacetAnnotation(
- processClassContext.getFacetHolder()));
- return;
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java
new file mode 100644
index 0000000..b53bc4f
--- /dev/null
+++ b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java
@@ -0,0 +1,53 @@
+/*
+ * 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.objectstore.jdo.metamodel.facets.object.auditable;
+
+
+import org.apache.isis.core.metamodel.facetapi.FacetUtil;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.Annotations;
+import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.core.objectstore.jdo.applib.annotations.Auditable;
+
+/**
+ * Required only for backward compatibility to support the JDO applib's version of the
+ * {@link Auditable} annotation.
+ *
+ */
+@Deprecated
+public class AuditableAnnotationInJdoApplibFacetFactory extends FacetFactoryAbstract {
+
+ public AuditableAnnotationInJdoApplibFacetFactory() {
+ super(FeatureType.OBJECTS_ONLY);
+ }
+
+ @Override
+ public void process(ProcessClassContext processClassContext) {
+ final Class<?> cls = processClassContext.getCls();
+ final Auditable annotation = Annotations.getAnnotation(cls, Auditable.class);
+ if (annotation == null) {
+ return;
+ }
+ FacetUtil.addFacet(new AuditableFacetAnnotationInJdoApplib(
+ processClassContext.getFacetHolder()));
+ return;
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacet.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacet.java b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacet.java
deleted file mode 100644
index 178e135..0000000
--- a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacet.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.objectstore.jdo.metamodel.facets.object.auditable;
-
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.objectstore.jdo.applib.annotations.Auditable;
-
-
-/**
- * Corresponds to annotating the class with the {@link Auditable} annotation.
- */
-public interface AuditableFacet extends Facet {
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetAbstract.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetAbstract.java b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetAbstract.java
deleted file mode 100644
index 94e8c45..0000000
--- a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetAbstract.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.objectstore.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;
-
-
-public abstract class AuditableFacetAbstract extends FacetAbstract implements
- AuditableFacet {
-
-
- public static Class<? extends Facet> type() {
- return AuditableFacet.class;
- }
-
- public AuditableFacetAbstract(FacetHolder facetHolder) {
- super(AuditableFacetAbstract.type(), facetHolder, Derivation.NOT_DERIVED);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotation.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotation.java b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotation.java
deleted file mode 100644
index 1ab563e..0000000
--- a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotation.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.objectstore.jdo.metamodel.facets.object.auditable;
-
-
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-
-public class AuditableFacetAnnotation extends AuditableFacetImpl {
-
- public AuditableFacetAnnotation(FacetHolder facetHolder) {
- super(facetHolder);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotationInJdoApplib.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotationInJdoApplib.java b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotationInJdoApplib.java
new file mode 100644
index 0000000..4eafb05
--- /dev/null
+++ b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotationInJdoApplib.java
@@ -0,0 +1,33 @@
+/*
+ * 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.objectstore.jdo.metamodel.facets.object.auditable;
+
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.audit.annotation.AuditableFacetAnnotation;
+
+
+@Deprecated
+public class AuditableFacetAnnotationInJdoApplib extends AuditableFacetAnnotation {
+
+ public AuditableFacetAnnotationInJdoApplib(FacetHolder facetHolder) {
+ super(facetHolder);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetImpl.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetImpl.java b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetImpl.java
deleted file mode 100644
index b0c73fb..0000000
--- a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetImpl.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.objectstore.jdo.metamodel.facets.object.auditable;
-
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-
-public class AuditableFacetImpl extends AuditableFacetAbstract {
-
- public AuditableFacetImpl(FacetHolder facetHolder) {
- super(facetHolder);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterface.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterface.java b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterface.java
deleted file mode 100644
index 288be6a..0000000
--- a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterface.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.objectstore.jdo.metamodel.facets.object.auditable;
-
-
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-
-public class AuditableFacetMarkerInterface extends AuditableFacetImpl {
-
- public AuditableFacetMarkerInterface(FacetHolder facetHolder) {
- super(facetHolder);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterfaceInJdoApplib.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterfaceInJdoApplib.java b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterfaceInJdoApplib.java
new file mode 100644
index 0000000..896a400
--- /dev/null
+++ b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterfaceInJdoApplib.java
@@ -0,0 +1,32 @@
+/*
+ * 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.objectstore.jdo.metamodel.facets.object.auditable;
+
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.audit.markerifc.AuditableFacetMarkerInterface;
+
+@Deprecated
+public class AuditableFacetMarkerInterfaceInJdoApplib extends AuditableFacetMarkerInterface {
+
+ public AuditableFacetMarkerInterfaceInJdoApplib(FacetHolder facetHolder) {
+ super(facetHolder);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceFacetFactory.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceFacetFactory.java b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceFacetFactory.java
deleted file mode 100644
index 39720ef..0000000
--- a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceFacetFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.objectstore.jdo.metamodel.facets.object.auditable;
-
-
-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.objectstore.jdo.applib.Auditable;
-
-
-public class AuditableMarkerInterfaceFacetFactory extends FacetFactoryAbstract {
-
- public AuditableMarkerInterfaceFacetFactory() {
- super(FeatureType.OBJECTS_ONLY);
- }
-
- @Override
- public void process(ProcessClassContext processClassContext) {
- final Class<?> cls = processClassContext.getCls();
- if(!Auditable.class.isAssignableFrom(cls)) {
- return;
- }
- FacetUtil.addFacet(new AuditableFacetMarkerInterface(
- processClassContext.getFacetHolder()));
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceInJdoApplibFacetFactory.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceInJdoApplibFacetFactory.java b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceInJdoApplibFacetFactory.java
new file mode 100644
index 0000000..ec4437d
--- /dev/null
+++ b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceInJdoApplibFacetFactory.java
@@ -0,0 +1,49 @@
+/*
+ * 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.objectstore.jdo.metamodel.facets.object.auditable;
+
+
+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.objectstore.jdo.applib.Auditable;
+
+/**
+ * Required only for backward compatibility to support the JDO applib's version of the
+ * {@link Auditable} marker interface.
+ */
+@Deprecated
+public class AuditableMarkerInterfaceInJdoApplibFacetFactory extends FacetFactoryAbstract {
+
+ public AuditableMarkerInterfaceInJdoApplibFacetFactory() {
+ super(FeatureType.OBJECTS_ONLY);
+ }
+
+ @Override
+ public void process(ProcessClassContext processClassContext) {
+ final Class<?> cls = processClassContext.getCls();
+ if(!Auditable.class.isAssignableFrom(cls)) {
+ return;
+ }
+ FacetUtil.addFacet(new AuditableFacetMarkerInterfaceInJdoApplib(
+ processClassContext.getFacetHolder()));
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java b/component/objectstore/jdo/jdo-metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
index 4f92a08..5a9ae86 100644
--- a/component/objectstore/jdo/jdo-metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
+++ b/component/objectstore/jdo/jdo-metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
@@ -29,11 +29,11 @@ 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.metamodel.facets.object.audit.AuditableFacet;
+import org.apache.isis.core.metamodel.facets.object.audit.annotation.AuditableFacetAnnotation;
import org.apache.isis.core.objectstore.jdo.applib.annotations.Auditable;
import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableAnnotationFacetFactory;
-import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableFacet;
-import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableFacetAnnotation;
+import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableAnnotationInJdoApplibFacetFactory;
import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableAnnotationFacetFactory;
import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacetAnnotation;
@@ -42,13 +42,13 @@ import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapabl
public class GivenAuditableAnnotationFacetFactoryTest extends
AbstractFacetFactoryTest {
- private AuditableAnnotationFacetFactory facetFactory;
+ private AuditableAnnotationInJdoApplibFacetFactory facetFactory;
@Override
protected void setUp() throws Exception {
super.setUp();
- facetFactory = new AuditableAnnotationFacetFactory();
+ facetFactory = new AuditableAnnotationInJdoApplibFacetFactory();
}
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/component/objectstore/jdo/jdo-metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableMarkerInterfaceFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableMarkerInterfaceFacetFactoryTest.java b/component/objectstore/jdo/jdo-metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableMarkerInterfaceFacetFactoryTest.java
index 3f33aa5..d543bf2 100644
--- a/component/objectstore/jdo/jdo-metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableMarkerInterfaceFacetFactoryTest.java
+++ b/component/objectstore/jdo/jdo-metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableMarkerInterfaceFacetFactoryTest.java
@@ -27,23 +27,23 @@ 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.metamodel.facets.object.audit.AuditableFacet;
+import org.apache.isis.core.metamodel.facets.object.audit.markerifc.AuditableFacetMarkerInterface;
import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryTest;
import org.apache.isis.objectstore.jdo.applib.Auditable;
-import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableFacet;
-import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableFacetMarkerInterface;
-import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableMarkerInterfaceFacetFactory;
+import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableMarkerInterfaceInJdoApplibFacetFactory;
public class GivenAuditableMarkerInterfaceFacetFactoryTest extends
AbstractFacetFactoryTest {
- private AuditableMarkerInterfaceFacetFactory facetFactory;
+ private AuditableMarkerInterfaceInJdoApplibFacetFactory facetFactory;
@Override
protected void setUp() throws Exception {
super.setUp();
- facetFactory = new AuditableMarkerInterfaceFacetFactory();
+ facetFactory = new AuditableMarkerInterfaceInJdoApplibFacetFactory();
}
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/core/applib/src/main/java/org/apache/isis/applib/annotation/Audited.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Audited.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Audited.java
new file mode 100644
index 0000000..5749314
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Audited.java
@@ -0,0 +1,47 @@
+/*
+ * 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.applib.annotation;
+
+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;
+
+import org.apache.isis.applib.services.audit.AuditingService;
+
+/**
+ * Indicates that the entity should be audited.
+ *
+ * <p>
+ * Requires that an implementation of the {@link AuditingService} is registered with the framework.
+ *
+ * <p>
+ * Check that the configured object store supports the annotation. For example, the
+ * JDO objectstore does support this annotation, but others may not.
+ *
+ * <p>
+ * Alternatively can use the similarly named {@link org.apache.isis.applib.marker.Auditable marker interface}.
+ */
+@Inherited
+@Target({ ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Audited {
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishedAction.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishedAction.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishedAction.java
new file mode 100644
index 0000000..773c251
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishedAction.java
@@ -0,0 +1,47 @@
+/*
+ * 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.applib.annotation;
+
+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;
+import java.util.List;
+
+import org.apache.isis.applib.services.publish.CanonicalEvent;
+import org.apache.isis.applib.services.publish.PublishingService;
+
+/**
+ * Indicates that the action should be published.
+ *
+ * <p>
+ * Requires that an implementation of the {@link PublishingService} is registered with the framework.
+ */
+@Inherited
+@Target({ ElementType.METHOD })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface PublishedAction {
+
+ public interface EventCanonicalizer {
+ public CanonicalEvent canonicalizeAction(Object invoked, String actionMethodName, List<Object> args, Object actionResult);
+ }
+ Class<? extends EventCanonicalizer> canonicalizeWith() default EventCanonicalizer.class;
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishedObject.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishedObject.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishedObject.java
new file mode 100644
index 0000000..ab5c714
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishedObject.java
@@ -0,0 +1,50 @@
+/*
+ * 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.applib.annotation;
+
+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;
+
+import org.apache.isis.applib.services.publish.CanonicalEvent;
+import org.apache.isis.applib.services.publish.PublishingService;
+
+/**
+ * Indicates that changes to the object's (properties) should be published.
+ *
+ * <p>
+ * Requires that an implementation of the {@link PublishingService} is registered with the framework.
+ */
+@Inherited
+@Target({ ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface PublishedObject {
+
+ /**
+ * @see http://en.wikipedia.org/wiki/Canonicalization
+ */
+ public interface EventCanonicalizer {
+ public CanonicalEvent canonicalizeObject(Object changedObject);
+ }
+
+ Class<? extends EventCanonicalizer> canonicalizeWith() default EventCanonicalizer.class;
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/core/applib/src/main/java/org/apache/isis/applib/marker/Auditable.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/marker/Auditable.java b/core/applib/src/main/java/org/apache/isis/applib/marker/Auditable.java
new file mode 100644
index 0000000..86cb8b6
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/marker/Auditable.java
@@ -0,0 +1,39 @@
+/*
+ * 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.applib.marker;
+
+import org.apache.isis.applib.services.audit.AuditingService;
+
+/**
+ * Marker interface to indicate that an entity should be audited.
+ *
+ * <p>
+ * Requires that an implementation of the {@link AuditingService} is registered with the framework.
+ *
+ * <p>
+ * Check that the configured object store supports the annotation. For example, the
+ * JDO objectstore does support this annotation, but others may not.
+ *
+ * <p>
+ * Alternatively can use the similarly named {@link org.apache.isis.applib.annotation.Audited annotation}.
+ *
+ */
+public interface Auditable {
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/core/applib/src/main/java/org/apache/isis/applib/services/audit/AuditingService.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/audit/AuditingService.java b/core/applib/src/main/java/org/apache/isis/applib/services/audit/AuditingService.java
new file mode 100644
index 0000000..4726fa6
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/audit/AuditingService.java
@@ -0,0 +1,38 @@
+/*
+ * 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.applib.services.audit;
+
+import org.apache.isis.applib.annotation.Hidden;
+
+public interface AuditingService {
+
+ @Hidden
+ public void audit(String user, long currentTimestampEpoch, String objectType, String identifier, String preValue, String postValue);
+
+
+ public static class Stdout implements AuditingService {
+
+ @Hidden
+ public void audit(String user, long currentTimestampEpoch, String objectType, String identifier, String preValue, String postValue) {
+ String auditMessage = objectType + ":" + identifier + " by " + user + ": " + preValue + " -> " + postValue;
+ System.out.println(auditMessage);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/core/applib/src/main/java/org/apache/isis/applib/services/publish/CanonicalEvent.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/publish/CanonicalEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/publish/CanonicalEvent.java
new file mode 100644
index 0000000..4c742db
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/publish/CanonicalEvent.java
@@ -0,0 +1,29 @@
+package org.apache.isis.applib.services.publish;
+
+/**
+ * An event in canonical form to be published
+ *
+ */
+public interface CanonicalEvent {
+
+ public final static class Default implements CanonicalEvent {
+
+ private final String str;
+
+ public Default(String str) {
+ this.str = str;
+ }
+
+ @Override
+ public String asString() {
+ return str;
+ }
+
+ @Override
+ public String toString() {
+ return asString();
+ }
+ }
+
+ public String asString();
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/core/applib/src/main/java/org/apache/isis/applib/services/publish/PublishingService.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/publish/PublishingService.java b/core/applib/src/main/java/org/apache/isis/applib/services/publish/PublishingService.java
new file mode 100644
index 0000000..2d47643
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/publish/PublishingService.java
@@ -0,0 +1,41 @@
+/*
+ * 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.applib.services.publish;
+
+import java.util.UUID;
+
+import org.apache.isis.applib.annotation.Hidden;
+
+public interface PublishingService {
+
+ @Hidden
+ public void publish(UUID guid, String currentUser, long currentTimestampEpoch, CanonicalEvent canonicalEvent);
+
+ public static class Stderr implements PublishingService {
+
+ @Hidden
+ @Override
+ public void publish(UUID guid, String currentUser, long currentTimestampEpoch, CanonicalEvent canonicalEvent) {
+ System.err.println("PUBLISHED OBJECT: " + guid + ":" + currentTimestampEpoch + ":" + currentTimestampEpoch + ":" + canonicalEvent.asString());
+ }
+
+ }
+}
+
+
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
index 2ce67d2..c39458f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
@@ -63,6 +63,9 @@ public interface FacetFactory {
this.methodRemover = methodRemover;
}
+ /**
+ * The class being processed.
+ */
public Class<?> getCls() {
return cls;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/publish/PublishedActionFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/publish/PublishedActionFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/publish/PublishedActionFacet.java
new file mode 100644
index 0000000..07e1a61
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/publish/PublishedActionFacet.java
@@ -0,0 +1,31 @@
+/*
+ * 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.core.metamodel.facets.actions.publish;
+
+import org.apache.isis.applib.annotation.PublishedAction;
+import org.apache.isis.core.metamodel.facets.SingleValueFacet;
+
+/**
+ * Indicates that the invocation of action should be published, specifying the means by which a
+ * canonical event representing this invocation should be created.
+ */
+public interface PublishedActionFacet extends SingleValueFacet<PublishedAction.EventCanonicalizer> {
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/publish/PublishedActionFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/publish/PublishedActionFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/publish/PublishedActionFacetAbstract.java
new file mode 100644
index 0000000..a82dafa
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/publish/PublishedActionFacetAbstract.java
@@ -0,0 +1,37 @@
+/*
+ * 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.core.metamodel.facets.actions.publish;
+
+import org.apache.isis.applib.annotation.PublishedAction;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.SingleValueFacetAbstract;
+
+public abstract class PublishedActionFacetAbstract extends SingleValueFacetAbstract<PublishedAction.EventCanonicalizer> implements PublishedActionFacet {
+
+ public static Class<? extends Facet> type() {
+ return PublishedActionFacet.class;
+ }
+
+ public PublishedActionFacetAbstract(final PublishedAction.EventCanonicalizer eventCanonicalizer, final FacetHolder holder) {
+ super(type(), eventCanonicalizer, holder);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/AuditableFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/AuditableFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/AuditableFacet.java
new file mode 100644
index 0000000..306bcc7
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/AuditableFacet.java
@@ -0,0 +1,31 @@
+/*
+ * 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.core.metamodel.facets.object.audit;
+
+
+import org.apache.isis.applib.marker.Auditable;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+
+
+/**
+ * Corresponds to annotating the class with the {@link Auditable} annotation.
+ */
+public interface AuditableFacet extends Facet {
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/AuditableFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/AuditableFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/AuditableFacetAbstract.java
new file mode 100644
index 0000000..de19e87
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/AuditableFacetAbstract.java
@@ -0,0 +1,39 @@
+/*
+ * 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.core.metamodel.facets.object.audit;
+
+
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+
+
+public abstract class AuditableFacetAbstract extends FacetAbstract implements
+ AuditableFacet {
+
+
+ public static Class<? extends Facet> type() {
+ return AuditableFacet.class;
+ }
+
+ public AuditableFacetAbstract(FacetHolder facetHolder) {
+ super(AuditableFacetAbstract.type(), facetHolder, Derivation.NOT_DERIVED);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/AuditableFacetImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/AuditableFacetImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/AuditableFacetImpl.java
new file mode 100644
index 0000000..741134f
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/AuditableFacetImpl.java
@@ -0,0 +1,30 @@
+/*
+ * 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.core.metamodel.facets.object.audit;
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+
+
+public class AuditableFacetImpl extends AuditableFacetAbstract {
+
+ public AuditableFacetImpl(FacetHolder facetHolder) {
+ super(facetHolder);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableAnnotationFacetFactory.java
new file mode 100644
index 0000000..f711612
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableAnnotationFacetFactory.java
@@ -0,0 +1,48 @@
+/*
+ * 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.core.metamodel.facets.object.audit.annotation;
+
+
+import org.apache.isis.applib.annotation.Audited;
+import org.apache.isis.core.metamodel.facetapi.FacetUtil;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.Annotations;
+import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+
+
+public class AuditableAnnotationFacetFactory extends FacetFactoryAbstract {
+
+ public AuditableAnnotationFacetFactory() {
+ super(FeatureType.OBJECTS_ONLY);
+ }
+
+ @Override
+ public void process(ProcessClassContext processClassContext) {
+ final Class<?> cls = processClassContext.getCls();
+ final Audited annotation = Annotations.getAnnotation(cls, Audited.class);
+ if (annotation == null) {
+ return;
+ }
+ FacetUtil.addFacet(new AuditableFacetAnnotation(
+ processClassContext.getFacetHolder()));
+ return;
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableFacetAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableFacetAnnotation.java
new file mode 100644
index 0000000..dbd5cb9
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableFacetAnnotation.java
@@ -0,0 +1,32 @@
+/*
+ * 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.core.metamodel.facets.object.audit.annotation;
+
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacetImpl;
+
+
+public class AuditableFacetAnnotation extends AuditableFacetImpl {
+
+ public AuditableFacetAnnotation(FacetHolder facetHolder) {
+ super(facetHolder);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/1f558615/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/markerifc/AuditableFacetMarkerInterface.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/markerifc/AuditableFacetMarkerInterface.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/markerifc/AuditableFacetMarkerInterface.java
new file mode 100644
index 0000000..f9a94a0
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/markerifc/AuditableFacetMarkerInterface.java
@@ -0,0 +1,33 @@
+/*
+ * 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.core.metamodel.facets.object.audit.markerifc;
+
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacetImpl;
+
+
+@Deprecated
+public class AuditableFacetMarkerInterface extends AuditableFacetImpl {
+
+ public AuditableFacetMarkerInterface(FacetHolder facetHolder) {
+ super(facetHolder);
+ }
+
+}