You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2017/12/07 10:09:37 UTC
[08/30] cayenne git commit: CAY-2377. Remove
org.apache.cayenne.lifecycle.changeset and org.apache.cayenne.lifecycle.audit
CAY-2377. Remove org.apache.cayenne.lifecycle.changeset and org.apache.cayenne.lifecycle.audit
CAY-2377. Remove all audit tests
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/0ece129d
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/0ece129d
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/0ece129d
Branch: refs/heads/master
Commit: 0ece129d908f0a0d783413d4a3780edce459e47f
Parents: ad4d5bd
Author: Arseni Bulatski <an...@gmail.com>
Authored: Tue Oct 24 11:44:36 2017 +0300
Committer: Arseni Bulatski <an...@gmail.com>
Committed: Wed Nov 15 10:27:46 2017 +0300
----------------------------------------------------------------------
.../cayenne/lifecycle/audit/Auditable.java | 47 ----
.../lifecycle/audit/AuditableAggregator.java | 72 ------
.../cayenne/lifecycle/audit/AuditableChild.java | 62 -----
.../audit/AuditableEntityDescriptor.java | 82 ------
.../lifecycle/audit/AuditableFilter.java | 247 ------------------
.../lifecycle/audit/AuditableOperation.java | 32 ---
.../lifecycle/audit/AuditableProcessor.java | 45 ----
.../cayenne/lifecycle/changeset/ChangeSet.java | 47 ----
.../lifecycle/changeset/ChangeSetFilter.java | 74 ------
.../lifecycle/changeset/GenericChangeSet.java | 137 ----------
.../lifecycle/changeset/PropertyChange.java | 54 ----
.../lifecycle/audit/AuditableFilterIT.java | 250 -------------------
.../lifecycle/audit/AuditableFilterTest.java | 184 --------------
.../lifecycle/audit/MockAuditableChild.java | 26 --
.../apache/cayenne/lifecycle/db/Auditable1.java | 29 ---
.../apache/cayenne/lifecycle/db/Auditable2.java | 29 ---
.../cayenne/lifecycle/db/AuditableChild1.java | 27 --
.../cayenne/lifecycle/db/AuditableChild2.java | 25 --
.../cayenne/lifecycle/db/AuditableChild3.java | 27 --
.../lifecycle/db/AuditableChildUuid.java | 30 ---
.../cayenne/lifecycle/db/auto/_Auditable1.java | 43 ----
.../cayenne/lifecycle/db/auto/_Auditable2.java | 51 ----
.../lifecycle/db/auto/_AuditableChild1.java | 38 ---
.../lifecycle/db/auto/_AuditableChild2.java | 38 ---
.../lifecycle/db/auto/_AuditableChild3.java | 46 ----
.../lifecycle/db/auto/_AuditableChildUuid.java | 43 ----
.../lifecycle/unit/AuditableServerCase.java | 83 ------
.../src/test/resources/lifecycle-map.map.xml | 76 ------
docs/doc/src/main/resources/UPGRADE.txt | 7 +-
29 files changed, 6 insertions(+), 1945 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/Auditable.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/Auditable.java b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/Auditable.java
deleted file mode 100644
index 5306881..0000000
--- a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/Auditable.java
+++ /dev/null
@@ -1,47 +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.cayenne.lifecycle.audit;
-
-import java.lang.annotation.Documented;
-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;
-
-/**
- * An annotation that adds auditing behavior to DataObjects.
- *
- * @since 3.1
- * @deprecated since 4.0. A preferred way to implement Audit functionality is via cayenne-commitlog module and
- * {@link org.apache.cayenne.commitlog.CommitLog} annotation.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@Inherited
-@Deprecated
-public @interface Auditable {
-
- /**
- * Returns an array of entity properties that should be excluded from audit.
- */
- String[] ignoredProperties() default {};
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableAggregator.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableAggregator.java b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableAggregator.java
deleted file mode 100644
index 29b4e4b..0000000
--- a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableAggregator.java
+++ /dev/null
@@ -1,72 +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.cayenne.lifecycle.audit;
-
-import java.util.IdentityHashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.apache.cayenne.Persistent;
-
-/**
- * Aggregates audit events per audit root object, and passes them to delegate
- * processor at the end of the transaction.
- *
- * @since 3.1
- */
-@Deprecated
-class AuditableAggregator {
-
- private static final int[] OP_PRECEDENCE;
-
- static {
- OP_PRECEDENCE = new int[AuditableOperation.values().length];
-
- // decreasing precedence of operations when recording audits is DELETE,
- // INSERT, UPDATE
- OP_PRECEDENCE[AuditableOperation.DELETE.ordinal()] = 3;
- OP_PRECEDENCE[AuditableOperation.INSERT.ordinal()] = 2;
- OP_PRECEDENCE[AuditableOperation.UPDATE.ordinal()] = 1;
- }
-
- private AuditableProcessor delegate;
-
- private Map<Persistent, AuditableOperation> ops;
-
- AuditableAggregator(AuditableProcessor delegate) {
- this.delegate = delegate;
- this.ops = new IdentityHashMap<>();
- }
-
- void audit(Persistent object, AuditableOperation operation) {
- AuditableOperation oldOp = ops.put(object, operation);
- if (oldOp != null) {
- if (OP_PRECEDENCE[operation.ordinal()] < OP_PRECEDENCE[oldOp.ordinal()]) {
- ops.put(object, oldOp);
- }
- }
- }
-
- void postSync() {
- for (Entry<Persistent, AuditableOperation> op : ops.entrySet()) {
- delegate.audit(op.getKey(), op.getValue());
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableChild.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableChild.java b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableChild.java
deleted file mode 100644
index ad50293..0000000
--- a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableChild.java
+++ /dev/null
@@ -1,62 +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.cayenne.lifecycle.audit;
-
-import java.lang.annotation.Documented;
-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;
-
-/**
- * A built-in annotation used to tag an object that is not auditable on its own, but whose
- * changes should be tracked together with changes of another ("parent") object. This
- * annotation allows to group changes in a closely related subtree of objects. Either
- * {@link #value()} or {@link #objectIdRelationship()} must be set to a non-empty String,
- * so that a processor of AuditableChild could find the parent of the annotated object.
- *
- * @{@link org.apache.cayenne.commitlog.CommitLog} annotation.
- * @since 3.1
- * @deprecated since 4.0. A preferred way to implement Audit functionality is via cayenne-commitlog module and
- * {@link org.apache.cayenne.commitlog.CommitLog} annotation. Unfortunately cayenne-commitlog does not provide
- * functionality to group changes for parent and child entities into a single event. So AuditableChild functionality
- * will have to be manually reimplemented in a custom {@link org.apache.cayenne.commitlog.CommitLogListener}.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@Inherited
-@Deprecated
-public @interface AuditableChild {
-
- /**
- * Returns the name of a to-one relationship from an annotated object to the "parent"
- * object that should be audited when annotated object is changed.
- */
- String value() default "";
-
- /**
- * Returns the name of the property of the annotated entity of the relationship that
- * stores a String "FK" of a related "parent" entity.
- */
- String objectIdRelationship() default "";
-
- String[] ignoredProperties() default {};
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableEntityDescriptor.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableEntityDescriptor.java b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableEntityDescriptor.java
deleted file mode 100644
index a6e2a7a..0000000
--- a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableEntityDescriptor.java
+++ /dev/null
@@ -1,82 +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.cayenne.lifecycle.audit;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Map;
-
-import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.Persistent;
-import org.apache.cayenne.lifecycle.changeset.ChangeSet;
-import org.apache.cayenne.lifecycle.changeset.ChangeSetFilter;
-import org.apache.cayenne.lifecycle.changeset.PropertyChange;
-import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.map.ObjRelationship;
-
-@Deprecated
-class AuditableEntityDescriptor {
-
- private Collection<String> ignoredProperties;
-
- AuditableEntityDescriptor(ObjEntity auditableEntity, String[] ignoredProperties) {
-
- this.ignoredProperties = new HashSet<>();
-
- // ignore runtime relationships
- for (ObjRelationship relationship : auditableEntity.getRelationships()) {
- if (relationship.isRuntime()) {
- this.ignoredProperties.add(relationship.getName());
- }
- }
-
- // ignore explicitly specified properties
- if (ignoredProperties != null) {
- for (String property : ignoredProperties) {
- this.ignoredProperties.add(property);
- }
- }
- }
-
- boolean auditableChange(Persistent object) {
- if (ignoredProperties.isEmpty()) {
- return true;
- }
-
- ChangeSet changeSet = ChangeSetFilter.preCommitChangeSet();
- if (changeSet == null) {
- throw new CayenneRuntimeException(
- "Required ChangeSetFilter is not installed, or is in the wrong place in the filter chain.");
- }
-
- Map<String, PropertyChange> changes = changeSet.getChanges(object);
-
- if (changes.size() > ignoredProperties.size()) {
- return true;
- }
-
- for (String key : changes.keySet()) {
- if (!ignoredProperties.contains(key)) {
- return true;
- }
- }
-
- return false;
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableFilter.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableFilter.java b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableFilter.java
deleted file mode 100644
index 50887da..0000000
--- a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableFilter.java
+++ /dev/null
@@ -1,247 +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.cayenne.lifecycle.audit;
-
-import org.apache.cayenne.DataChannel;
-import org.apache.cayenne.DataChannelFilter;
-import org.apache.cayenne.DataChannelFilterChain;
-import org.apache.cayenne.DataObject;
-import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.Persistent;
-import org.apache.cayenne.QueryResponse;
-import org.apache.cayenne.annotation.PostPersist;
-import org.apache.cayenne.annotation.PostRemove;
-import org.apache.cayenne.annotation.PostUpdate;
-import org.apache.cayenne.graph.GraphDiff;
-import org.apache.cayenne.lifecycle.changeset.ChangeSetFilter;
-import org.apache.cayenne.map.EntityResolver;
-import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.query.Query;
-
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * A {@link DataChannelFilter} that enables audit of entities annotated with
- * {@link Auditable} and {@link AuditableChild}. Note that this filter relies on
- * {@link ChangeSetFilter} presence in the DataDomain filter chain to be able to
- * analyze ignored properties.
- *
- * @since 3.1
- * @deprecated since 4.0, use {@link org.apache.cayenne.commitlog.CommitLogFilter}.
- */
-@Deprecated
-public class AuditableFilter implements DataChannelFilter {
-
- private ThreadLocal<AuditableAggregator> threadAggregator;
- private ConcurrentMap<String, AuditableEntityDescriptor> entityDescriptors;
- protected AuditableProcessor processor;
- protected EntityResolver entityResolver;
-
- /**
- * @since 4.0
- */
- public AuditableFilter(AuditableProcessor processor) {
- this.processor = processor;
- this.entityDescriptors = new ConcurrentHashMap<>();
- this.threadAggregator = new ThreadLocal<>();
- }
-
- /**
- * @deprecated since 3.1 use {@link #AuditableFilter(AuditableProcessor)}
- * constructor - EntityResolver will be initialized in 'init'.
- */
- @Deprecated
- public AuditableFilter(EntityResolver entityResolver, AuditableProcessor processor) {
- this(processor);
- }
-
- public void init(DataChannel channel) {
- this.entityResolver = channel.getEntityResolver();
- }
-
- public QueryResponse onQuery(ObjectContext originatingContext, Query query, DataChannelFilterChain filterChain) {
- return filterChain.onQuery(originatingContext, query);
- }
-
- public GraphDiff onSync(ObjectContext originatingContext, GraphDiff changes, int syncType,
- DataChannelFilterChain filterChain) {
-
- GraphDiff response;
-
- try {
- response = filterChain.onSync(originatingContext, changes, syncType);
- if (syncType == DataChannel.FLUSH_CASCADE_SYNC || syncType == DataChannel.FLUSH_NOCASCADE_SYNC) {
- postSync();
- }
- } finally {
- cleanupPostSync();
- }
-
- return response;
- }
-
- /**
- * A method called at the end of every
- * {@link #onSync(ObjectContext, GraphDiff, int, DataChannelFilterChain)}
- * invocation. This implementation uses it for cleaning up thread-local
- * state of the filter. Subclasses may override it to do their own cleanup,
- * and are expected to call super.
- */
- protected void cleanupPostSync() {
- threadAggregator.set(null);
- }
-
- void postSync() {
- AuditableAggregator aggregator = threadAggregator.get();
- if (aggregator != null) {
- // must reset thread aggregator before processing the audit
- // operations
- // to avoid an endless processing loop if audit processor commits
- // something
- threadAggregator.set(null);
- aggregator.postSync();
- }
- }
-
- private AuditableAggregator getAggregator() {
- AuditableAggregator aggregator = threadAggregator.get();
- if (aggregator == null) {
- aggregator = new AuditableAggregator(processor);
- threadAggregator.set(aggregator);
- }
-
- return aggregator;
- }
-
- @PostPersist(entityAnnotations = Auditable.class)
- void insertAudit(Persistent object) {
- getAggregator().audit(object, AuditableOperation.INSERT);
- }
-
- @PostRemove(entityAnnotations = Auditable.class)
- void deleteAudit(Persistent object) {
- getAggregator().audit(object, AuditableOperation.DELETE);
- }
-
- @PostUpdate(entityAnnotations = Auditable.class)
- void updateAudit(Persistent object) {
- if (isAuditableUpdate(object, false)) {
- getAggregator().audit(object, AuditableOperation.UPDATE);
- }
- }
-
- // only catching child updates... child insert/delete presumably causes an
- // event on
- // the owner object
-
- @PostUpdate(entityAnnotations = AuditableChild.class)
- void updateAuditChild(Persistent object) {
-
- if (isAuditableUpdate(object, true)) {
-
- Persistent parent = getParent(object);
-
- if (parent != null) {
- // not calling 'updateAudit' to skip checking
- // 'isAuditableUpdate' on
- // parent
- getAggregator().audit(parent, AuditableOperation.UPDATE);
- } else {
- // TODO: maybe log this fact... shouldn't normally happen, but I
- // can
- // imagine certain combinations of object graphs, disconnected
- // relationships, delete rules, etc. may cause this
- }
- }
- }
-
- protected Persistent getParent(Persistent object) {
-
- if (object == null) {
- throw new NullPointerException("Null object");
- }
-
- if (!(object instanceof DataObject)) {
- throw new IllegalArgumentException("Object is not a DataObject: " + object.getClass().getName());
- }
-
- DataObject dataObject = (DataObject) object;
-
- AuditableChild annotation = dataObject.getClass().getAnnotation(AuditableChild.class);
- if (annotation == null) {
- throw new IllegalArgumentException("No 'AuditableChild' annotation found");
- }
-
- String propertyPath = annotation.value();
-
- if (propertyPath.equals("")) {
- propertyPath = objectIdRelationshipName(annotation.objectIdRelationship());
- }
-
- if (propertyPath == null || propertyPath.equals("")) {
- throw new IllegalStateException("Either 'value' or 'objectIdRelationship' of @AuditableChild must be set");
- }
-
- return (Persistent) dataObject.readNestedProperty(propertyPath);
- }
-
- // TODO: It's a temporary clone method of {@link
- // org.apache.cayenne.lifecycle.relationship.ObjectIdRelationshipHandler#objectIdRelationshipName(String)}.
- // Needs to be encapsulated to some separate class to avoid a code
- // duplication
- private String objectIdRelationshipName(String uuidPropertyName) {
- return "cay:related:" + uuidPropertyName;
- }
-
- protected boolean isAuditableUpdate(Persistent object, boolean child) {
- AuditableEntityDescriptor descriptor = getEntityDescriptor(object, child);
- return descriptor.auditableChange(object);
- }
-
- private AuditableEntityDescriptor getEntityDescriptor(Persistent object, boolean child) {
-
- ObjEntity entity = entityResolver.getObjEntity(object);
-
- AuditableEntityDescriptor descriptor = entityDescriptors.get(entity.getName());
- if (descriptor == null) {
-
- String[] ignoredProperties;
-
- if (child) {
- AuditableChild annotation = object.getClass().getAnnotation(AuditableChild.class);
- ignoredProperties = annotation != null ? annotation.ignoredProperties() : null;
- } else {
- Auditable annotation = object.getClass().getAnnotation(Auditable.class);
- ignoredProperties = annotation != null ? annotation.ignoredProperties() : null;
- }
-
- descriptor = new AuditableEntityDescriptor(entity, ignoredProperties);
-
- AuditableEntityDescriptor existingDescriptor = entityDescriptors.putIfAbsent(entity.getName(), descriptor);
-
- if (existingDescriptor != null) {
- descriptor = existingDescriptor;
- }
- }
-
- return descriptor;
-
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableOperation.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableOperation.java b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableOperation.java
deleted file mode 100644
index bc52ebf..0000000
--- a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableOperation.java
+++ /dev/null
@@ -1,32 +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.cayenne.lifecycle.audit;
-
-/**
- * An enum of possible operations that can be audited.
- *
- * @since 3.1
- * @deprecated since 4.0, use {@link org.apache.cayenne.lifecycle.postcommit.PostCommitFilter}
- * @see org.apache.cayenne.lifecycle.changemap.ObjectChangeType
- */
-@Deprecated
-public enum AuditableOperation {
-
- INSERT, UPDATE, DELETE;
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableProcessor.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableProcessor.java b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableProcessor.java
deleted file mode 100644
index fc085f7..0000000
--- a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableProcessor.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.cayenne.lifecycle.audit;
-
-import org.apache.cayenne.Persistent;
-
-/**
- * A superclass of application specific handlers of the {@link Auditable}
- * annotation, that provides basic needed callbacks.
- *
- * @since 3.1
- * @deprecated since 4.0, use {@link org.apache.cayenne.lifecycle.postcommit.PostCommitFilter}
- */
-public interface AuditableProcessor {
-
- /**
- * A method called by {@link AuditableFilter} that should audit records as
- * appropriate in a given application. Implementors may insert audit records
- * in DB, log a message, etc.
- *
- * @param object
- * the root auditable object. This is an object that is either
- * annotated with {@link Auditable} or pointed to by another
- * object annotated with {@link AuditableChild}.
- * @param operation
- * a type of object change.
- */
- void audit(Persistent object, AuditableOperation operation);
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSet.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSet.java b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSet.java
deleted file mode 100644
index 2fbaeb7..0000000
--- a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSet.java
+++ /dev/null
@@ -1,47 +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.cayenne.lifecycle.changeset;
-
-import java.util.Map;
-
-import org.apache.cayenne.Persistent;
-import org.apache.cayenne.graph.GraphDiff;
-
-/**
- * Represents a set of changes to persistent objects corresponding to a certain lifecycle
- * stage. The changes are presented in a more usable form compared to the internal Cayenne
- * representation as {@link GraphDiff}. One or more changes to the same property of the
- * same object are all combined in a single {@link PropertyChange} instance.
- *
- * @since 3.1
- * @deprecated since 4.0 in favour of {@link org.apache.cayenne.lifecycle.postcommit.PostCommitFilter}
- *
- * @see org.apache.cayenne.lifecycle.changemap.ChangeMap
- */
-@Deprecated
-public interface ChangeSet {
-
- public static final String OBJECT_ID_PROPERTY_NAME = "cayenne:objectId";
-
- /**
- * Returns a map of changes for a given object in its context, keyed by property name.
- * If the object is unchanged, an empty map is returned.
- */
- Map<String, PropertyChange> getChanges(Persistent object);
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSetFilter.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSetFilter.java b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSetFilter.java
deleted file mode 100644
index 141e838..0000000
--- a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSetFilter.java
+++ /dev/null
@@ -1,74 +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.cayenne.lifecycle.changeset;
-
-import org.apache.cayenne.DataChannel;
-import org.apache.cayenne.DataChannelFilter;
-import org.apache.cayenne.DataChannelFilterChain;
-import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.QueryResponse;
-import org.apache.cayenne.graph.GraphDiff;
-import org.apache.cayenne.query.Query;
-
-/**
- * A {@link DataChannelFilter} that provides interested parties with a thread-local access
- * to the current commit changeset. It will only return a non-null change set when commit
- * within the scope of the filter
- * {@link #onSync(ObjectContext, GraphDiff, int, DataChannelFilterChain)} method. The
- * filter is intended to be used by pre-commit and post-commit listeners.
- *
- * @since 3.1
- * @deprecated since 4.0 in favour of {@link org.apache.cayenne.lifecycle.postcommit.PostCommitFilter}
- */
-@Deprecated
-public class ChangeSetFilter implements DataChannelFilter {
-
- private static final ThreadLocal<ChangeSet> PRE_COMMIT_CHANGE_SET = new ThreadLocal<ChangeSet>();
-
- public static ChangeSet preCommitChangeSet() {
- return PRE_COMMIT_CHANGE_SET.get();
- }
-
- public void init(DataChannel channel) {
- // noop..
- }
-
- public QueryResponse onQuery(
- ObjectContext originatingContext,
- Query query,
- DataChannelFilterChain filterChain) {
- return filterChain.onQuery(originatingContext, query);
- }
-
- public GraphDiff onSync(
- ObjectContext originatingContext,
- GraphDiff changes,
- int syncType,
- DataChannelFilterChain filterChain) {
-
- try {
- PRE_COMMIT_CHANGE_SET.set(new GenericChangeSet(changes));
- return filterChain.onSync(originatingContext, changes, syncType);
- }
- finally {
- PRE_COMMIT_CHANGE_SET.set(null);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/GenericChangeSet.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/GenericChangeSet.java b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/GenericChangeSet.java
deleted file mode 100644
index c855411..0000000
--- a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/GenericChangeSet.java
+++ /dev/null
@@ -1,137 +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.cayenne.lifecycle.changeset;
-
-import org.apache.cayenne.ObjectId;
-import org.apache.cayenne.Persistent;
-import org.apache.cayenne.graph.GraphChangeHandler;
-import org.apache.cayenne.graph.GraphDiff;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * A {@link ChangeSet} implemented as a wrapper on top of {@link GraphDiff} of unspecified
- * nature.
- * <p>
- * Synchronization note: While this class is thread safe, but is not generally intended
- * for use in multi-threaded manner. It is common to use it within a single transaction
- * thread.
- *
- * @since 3.1
- * @deprecated since 4.0
- * @see org.apache.cayenne.lifecycle.changemap.ChangeMap
- */
-@Deprecated
-public class GenericChangeSet implements ChangeSet {
-
- private GraphDiff diff;
- private Map<ObjectId, Map<String, PropertyChange>> changes;
-
- public GenericChangeSet(GraphDiff diff) {
- this.diff = diff;
- }
-
- public Map<String, PropertyChange> getChanges(Persistent object) {
- Map<String, PropertyChange> changes = getChanges().get(object.getObjectId());
- return changes != null ? changes : Collections.<String, PropertyChange>emptyMap();
- }
-
- private Map<ObjectId, Map<String, PropertyChange>> getChanges() {
- if (changes == null) {
- changes = parseDiff();
- }
-
- return changes;
- }
-
- private Map<ObjectId, Map<String, PropertyChange>> parseDiff() {
-
- final Map<ObjectId, Map<String, PropertyChange>> changes = new HashMap<>();
-
- diff.apply(new GraphChangeHandler() {
-
- private Map<String, PropertyChange> getChangeMap(Object id) {
- Map<String, PropertyChange> map = changes.get(id);
-
- if (map == null) {
- map = new HashMap<>();
- changes.put((ObjectId) id, map);
- }
-
- return map;
- }
-
- PropertyChange getChange(Object id, String property, Object oldValue) {
- Map<String, PropertyChange> map = getChangeMap(id);
-
- PropertyChange change = map.get(property);
- if (change == null) {
- change = new PropertyChange(property, oldValue);
- map.put(property, change);
- }
-
- return change;
- }
-
- public void nodeRemoved(Object nodeId) {
- // noop, don't care, we'll still track the changes for deleted objects.
- }
-
- public void nodeCreated(Object nodeId) {
- // noop (??)
- }
-
- public void arcDeleted(Object nodeId, Object targetNodeId, Object arcId) {
- // record the fact of relationship change... TODO: analyze relationship
- // semantics and record changset values
- getChange((ObjectId)nodeId, (String) arcId, null);
- }
-
- public void arcCreated(Object nodeId, Object targetNodeId, Object arcId) {
- // record the fact of relationship change... TODO: analyze relationship
- // semantics and record changset values
- getChange((ObjectId)nodeId, (String) arcId, null);
- }
-
- public void nodePropertyChanged(
- Object nodeId,
- String property,
- Object oldValue,
- Object newValue) {
- getChange(nodeId, property, oldValue).setNewValue(newValue);
- }
-
- public void nodeIdChanged(Object nodeId, Object newId) {
-
- // store the same change set under old and new ids to allow lookup before
- // and after the commit
- Map<String, PropertyChange> map = getChangeMap(nodeId);
- changes.put((ObjectId) newId, map);
-
- // record a change for a special ID "property"
- getChange(nodeId, OBJECT_ID_PROPERTY_NAME, nodeId).setNewValue(newId);
- }
-
- });
-
- return changes;
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/PropertyChange.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/PropertyChange.java b/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/PropertyChange.java
deleted file mode 100644
index 4c2d957..0000000
--- a/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/PropertyChange.java
+++ /dev/null
@@ -1,54 +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.cayenne.lifecycle.changeset;
-
-/**
- * A change to a single object property.
- *
- * @since 3.1
- * @deprecated since 4.0
- */
-@Deprecated
-public class PropertyChange {
-
- private String propertyName;
- private Object oldValue;
- private Object newValue;
-
- PropertyChange(String propertyName, Object oldValue) {
- this.propertyName = propertyName;
- this.oldValue = oldValue;
- }
-
- public Object getOldValue() {
- return oldValue;
- }
-
- public Object getNewValue() {
- return newValue;
- }
-
- public String getPropertyName() {
- return propertyName;
- }
-
- void setNewValue(Object newValue) {
- this.newValue = newValue;
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/AuditableFilterIT.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/AuditableFilterIT.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/AuditableFilterIT.java
deleted file mode 100644
index 730f51b..0000000
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/AuditableFilterIT.java
+++ /dev/null
@@ -1,250 +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.cayenne.lifecycle.audit;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.EnumMap;
-import java.util.Map;
-
-import org.apache.cayenne.Cayenne;
-import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.Persistent;
-import org.apache.cayenne.access.DataDomain;
-import org.apache.cayenne.lifecycle.changeset.ChangeSetFilter;
-import org.apache.cayenne.lifecycle.db.Auditable1;
-import org.apache.cayenne.lifecycle.db.Auditable2;
-import org.apache.cayenne.lifecycle.db.AuditableChild1;
-import org.apache.cayenne.lifecycle.db.AuditableChild2;
-import org.apache.cayenne.lifecycle.db.AuditableChild3;
-import org.apache.cayenne.lifecycle.db.AuditableChildUuid;
-import org.apache.cayenne.lifecycle.id.IdCoder;
-import org.apache.cayenne.lifecycle.relationship.ObjectIdRelationshipHandler;
-import org.apache.cayenne.lifecycle.unit.AuditableServerCase;
-import org.junit.Test;
-
-@Deprecated
-public class AuditableFilterIT extends AuditableServerCase {
-
- @Test
- public void testAudit_IgnoreRuntimeRelationships() throws Exception {
-
- auditable1.insert(1, "xx");
- auditable1.insert(2, "yy");
- auditable1.insert(3, "aa");
- auditableChild2.insert(1, 1, "zz");
-
- DataDomain domain = runtime.getDataDomain();
-
- Processor processor = new Processor();
-
- AuditableFilter filter = new AuditableFilter(processor);
- domain.addFilter(filter);
-
- // prerequisite for BaseAuditableProcessor use
- ChangeSetFilter changeSetFilter = new ChangeSetFilter();
- domain.addFilter(changeSetFilter);
-
- ObjectContext context = runtime.newContext();
-
- Auditable1 a2 = Cayenne.objectForPK(context, Auditable1.class, 2);
- AuditableChild2 a21 = Cayenne.objectForPK(context, AuditableChild2.class, 1);
-
- a21.setParent(a2);
- a21.setCharProperty1("XYZA");
- context.commitChanges();
-
- assertEquals(0, processor.size);
-
- processor.reset();
-
- Auditable1 a3 = Cayenne.objectForPK(context, Auditable1.class, 3);
- a21.setParent(a3);
- a3.setCharProperty1("12");
-
- context.commitChanges();
- assertEquals(1, processor.size);
- assertTrue(processor.audited.get(AuditableOperation.UPDATE).contains(a3));
- }
-
- @Test
- public void testAudit_IncludeToManyRelationships() throws Exception {
-
- auditable1.insert(1, "xx");
- auditable1.insert(2, "yy");
- auditableChild1.insert(1, 1, "zz");
-
- DataDomain domain = runtime.getDataDomain();
-
- Processor processor = new Processor();
-
- AuditableFilter filter = new AuditableFilter(processor);
- domain.addFilter(filter);
-
- // prerequisite for BaseAuditableProcessor use
- ChangeSetFilter changeSetFilter = new ChangeSetFilter();
- domain.addFilter(changeSetFilter);
-
- ObjectContext context = runtime.newContext();
-
- Auditable1 a2 = Cayenne.objectForPK(context, Auditable1.class, 2);
- AuditableChild1 a21 = Cayenne.objectForPK(context, AuditableChild1.class, 1);
-
- a21.setParent(a2);
- context.commitChanges();
-
- assertEquals(2, processor.size);
-
- assertTrue(processor.audited.get(AuditableOperation.UPDATE).contains(a2));
- assertTrue(processor.audited.get(AuditableOperation.UPDATE)
- .contains(Cayenne.objectForPK(context, Auditable1.class, 1)));
- }
-
- @Test
- public void testAudit_IgnoreProperties() throws Exception {
-
- auditable2.insert(1, "P1_1", "P2_1");
- auditable2.insert(2, "P1_2", "P2_2");
- auditable2.insert(3, "P1_3", "P2_3");
-
- DataDomain domain = runtime.getDataDomain();
-
- Processor processor = new Processor();
-
- AuditableFilter filter = new AuditableFilter(processor);
- domain.addFilter(filter);
-
- // prerequisite for BaseAuditableProcessor use
- ChangeSetFilter changeSetFilter = new ChangeSetFilter();
- domain.addFilter(changeSetFilter);
-
- ObjectContext context = runtime.newContext();
-
- Auditable2 a1 = Cayenne.objectForPK(context, Auditable2.class, 1);
- Auditable2 a2 = Cayenne.objectForPK(context, Auditable2.class, 2);
- Auditable2 a3 = Cayenne.objectForPK(context, Auditable2.class, 3);
-
- a1.setCharProperty1("__");
- a2.setCharProperty2("__");
- a3.setCharProperty1("__");
- a3.setCharProperty2("__");
-
- context.commitChanges();
-
- assertEquals(2, processor.size);
- assertTrue(processor.audited.get(AuditableOperation.UPDATE).contains(a2));
- assertTrue(processor.audited.get(AuditableOperation.UPDATE).contains(a3));
- }
-
- @Test
- public void testAuditableChild_IgnoreProperties() throws Exception {
-
- auditable2.insert(1, "P1_1", "P2_1");
- auditable2.insert(2, "P1_2", "P2_2");
- auditableChild3.insert(1, 1, "C", "D");
-
- DataDomain domain = runtime.getDataDomain();
-
- Processor processor = new Processor();
-
- AuditableFilter filter = new AuditableFilter(processor);
- domain.addFilter(filter);
-
- // prerequisite for BaseAuditableProcessor use
- ChangeSetFilter changeSetFilter = new ChangeSetFilter();
- domain.addFilter(changeSetFilter);
-
- ObjectContext context = runtime.newContext();
-
- AuditableChild3 ac1 = Cayenne.objectForPK(context, AuditableChild3.class, 1);
-
- // a change to ignored property should not cause an audit event
- ac1.setCharProperty1("X_X");
-
- context.commitChanges();
- assertEquals(0, processor.size);
-
- processor.reset();
- ac1.setCharProperty2("XXXXX");
- context.commitChanges();
- assertEquals(1, processor.size);
- }
-
- @Test
- public void testAuditableChild_objectIdRelationship() throws Exception {
- auditable1.insert(1, "xx");
- auditableChildUuid.insert(1, "Auditable1:1", "xxx", "yyy");
-
- DataDomain domain = runtime.getDataDomain();
- Processor processor = new Processor();
-
- AuditableFilter filter = new AuditableFilter(processor);
- domain.addFilter(filter);
-
- // prerequisite for BaseAuditableProcessor use
- ChangeSetFilter changeSetFilter = new ChangeSetFilter();
- domain.addFilter(changeSetFilter);
-
- ObjectContext context = runtime.newContext();
- AuditableChildUuid ac = Cayenne.objectForPK(context, AuditableChildUuid.class, 1);
- Auditable1 a1 = Cayenne.objectForPK(context, Auditable1.class, 1);
- IdCoder refHandler = new IdCoder(domain.getEntityResolver());
- ObjectIdRelationshipHandler handler = new ObjectIdRelationshipHandler(refHandler);
- handler.relate(ac, a1);
-
- ac.setCharProperty1("xxxx");
- context.commitChanges();
- assertEquals(1, processor.size);
- Collection<Object> auditables = processor.audited.get(AuditableOperation.UPDATE);
- assertSame(a1, auditables.toArray()[0]);
-
- ac.setCharProperty2("yyyy");
- context.commitChanges();
- assertEquals(2, processor.size);
- assertSame(a1, auditables.toArray()[1]);
- }
-
- private final class Processor implements AuditableProcessor {
-
- Map<AuditableOperation, Collection<Object>> audited;
- int size;
-
- Processor() {
- reset();
- }
-
- void reset() {
-
- audited = new EnumMap<>(AuditableOperation.class);
-
- for (AuditableOperation op : AuditableOperation.values()) {
- audited.put(op, new ArrayList<>());
- }
- }
-
- public void audit(Persistent object, AuditableOperation operation) {
- audited.get(operation).add(object);
- size++;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/AuditableFilterTest.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/AuditableFilterTest.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/AuditableFilterTest.java
deleted file mode 100644
index 9f8eb08..0000000
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/AuditableFilterTest.java
+++ /dev/null
@@ -1,184 +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.cayenne.lifecycle.audit;
-
-import org.apache.cayenne.CayenneDataObject;
-import org.apache.cayenne.DataChannel;
-import org.apache.cayenne.DataChannelFilterChain;
-import org.apache.cayenne.DataObject;
-import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.ObjectId;
-import org.apache.cayenne.Persistent;
-import org.apache.cayenne.configuration.server.ServerRuntime;
-import org.apache.cayenne.graph.GraphDiff;
-import org.apache.cayenne.lifecycle.db.Auditable1;
-import org.apache.cayenne.lifecycle.db.AuditableChildUuid;
-import org.apache.cayenne.lifecycle.id.IdCoder;
-import org.apache.cayenne.lifecycle.relationship.ObjectIdRelationshipHandler;
-import org.apache.cayenne.map.EntityResolver;
-import org.apache.cayenne.map.ObjEntity;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-@Deprecated
-public class AuditableFilterTest {
-
- private AuditableProcessor processor;
- private ServerRuntime runtime;
- private AuditableFilter filter;
-
- @Before
- public void setUp() throws Exception {
-
- EntityResolver resolver = mock(EntityResolver.class);
-
- ObjEntity objectEntity = new ObjEntity("CayenneDataObject");
- when(resolver.lookupObjEntity(any(Object.class))).thenReturn(objectEntity);
- when(resolver.getObjEntity(any(Persistent.class))).thenReturn(objectEntity);
- when(resolver.getObjEntity(any(Class.class))).thenReturn(objectEntity);
-
- DataChannel channel = mock(DataChannel.class);
- when(channel.getEntityResolver()).thenReturn(resolver);
-
- this.processor = mock(AuditableProcessor.class);
- this.runtime = ServerRuntime.builder().addConfig("cayenne-lifecycle.xml").build();
- this.filter = new AuditableFilter(processor);
- this.filter.init(channel);
- }
-
- @After
- public void tearDown() throws Exception {
- runtime.shutdown();
- }
-
- @Test
- public void testInsertAudit() {
-
- Persistent audited = mock(Persistent.class);
- filter.insertAudit(audited);
- filter.postSync();
-
- verify(processor).audit(audited, AuditableOperation.INSERT);
- }
-
- @Test
- public void testDeleteAudit() {
-
- Persistent audited = mock(Persistent.class);
- filter.deleteAudit(audited);
- filter.postSync();
-
- verify(processor).audit(audited, AuditableOperation.DELETE);
- }
-
- @Test
- public void testUpdateAudit() {
-
- Persistent audited = mock(Persistent.class);
- filter.updateAudit(audited);
- filter.postSync();
-
- verify(processor).audit(audited, AuditableOperation.UPDATE);
- }
-
- @Test
- public void testUpdateAuditChild() {
-
- Persistent auditedParent = mock(Persistent.class);
- DataObject audited = new MockAuditableChild();
- audited.setObjectId(new ObjectId("MockAuditableChild", "a", 1));
- audited.writeProperty("parent", auditedParent);
- filter.updateAuditChild(audited);
- filter.postSync();
-
- verify(processor).audit(auditedParent, AuditableOperation.UPDATE);
- }
-
- @Test
- public void testUpdateAuditChildByObjectIdRelationship() {
-
- ObjectContext context = runtime.newContext();
- Auditable1 auditedParent = context.newObject(Auditable1.class);
- AuditableChildUuid audited = context.newObject(AuditableChildUuid.class);
-
- IdCoder refHandler = new IdCoder(context.getEntityResolver());
- ObjectIdRelationshipHandler handler = new ObjectIdRelationshipHandler(refHandler);
- handler.relate(audited, auditedParent);
- context.commitChanges();
-
- filter.updateAuditChild(audited);
- filter.postSync();
- verify(processor).audit(auditedParent, AuditableOperation.UPDATE);
- }
-
- @Test
- public void testOnSyncPassThrough() {
-
- ObjectContext context = mock(ObjectContext.class);
- GraphDiff changes = mock(GraphDiff.class);
-
- DataChannelFilterChain chain = mock(DataChannelFilterChain.class);
-
- filter.onSync(context, changes, DataChannel.FLUSH_CASCADE_SYNC, chain);
- verify(chain).onSync(context, changes, DataChannel.FLUSH_CASCADE_SYNC);
-
- filter.onSync(context, changes, DataChannel.ROLLBACK_CASCADE_SYNC, chain);
- verify(chain).onSync(context, changes, DataChannel.ROLLBACK_CASCADE_SYNC);
- }
-
- @Test
- public void testOnSyncAuditEventsCollapse() {
-
- ObjectContext context = mock(ObjectContext.class);
- GraphDiff changes = mock(GraphDiff.class);
-
- final DataObject auditedParent1 = new CayenneDataObject();
- final DataObject audited11 = new MockAuditableChild();
- audited11.writeProperty("parent", auditedParent1);
- final DataObject audited12 = new MockAuditableChild();
- audited12.writeProperty("parent", auditedParent1);
- final DataObject audited13 = new MockAuditableChild();
- audited13.writeProperty("parent", auditedParent1);
-
- DataChannelFilterChain chain = mock(DataChannelFilterChain.class);
- when(chain.onSync(context, changes, DataChannel.FLUSH_CASCADE_SYNC)).thenAnswer(new Answer<GraphDiff>() {
-
- public GraphDiff answer(InvocationOnMock invocation) throws Throwable {
- filter.updateAudit(auditedParent1);
- filter.updateAuditChild(audited11);
- filter.updateAuditChild(audited12);
- filter.updateAuditChild(audited13);
- return mock(GraphDiff.class);
- }
- });
-
- filter.onSync(context, changes, DataChannel.FLUSH_CASCADE_SYNC, chain);
-
- verify(chain).onSync(context, changes, DataChannel.FLUSH_CASCADE_SYNC);
- verify(processor).audit(auditedParent1, AuditableOperation.UPDATE);
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/MockAuditableChild.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/MockAuditableChild.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/MockAuditableChild.java
deleted file mode 100644
index a33ecb3..0000000
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/audit/MockAuditableChild.java
+++ /dev/null
@@ -1,26 +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.cayenne.lifecycle.audit;
-
-import org.apache.cayenne.CayenneDataObject;
-
-@AuditableChild("parent")
-public class MockAuditableChild extends CayenneDataObject {
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/Auditable1.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/Auditable1.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/Auditable1.java
deleted file mode 100644
index 4cb7ff1..0000000
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/Auditable1.java
+++ /dev/null
@@ -1,29 +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.cayenne.lifecycle.db;
-
-import org.apache.cayenne.lifecycle.audit.Auditable;
-import org.apache.cayenne.lifecycle.db.auto._Auditable1;
-
-@Auditable
-public class Auditable1 extends _Auditable1 {
-
- private static final long serialVersionUID = 8458581370578140962L;
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/Auditable2.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/Auditable2.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/Auditable2.java
deleted file mode 100644
index 6f81ffa..0000000
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/Auditable2.java
+++ /dev/null
@@ -1,29 +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.cayenne.lifecycle.db;
-
-import org.apache.cayenne.lifecycle.audit.Auditable;
-import org.apache.cayenne.lifecycle.db.auto._Auditable2;
-
-@Auditable(ignoredProperties = "charProperty1")
-public class Auditable2 extends _Auditable2 {
-
- private static final long serialVersionUID = 5203324250911707978L;
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/AuditableChild1.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/AuditableChild1.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/AuditableChild1.java
deleted file mode 100644
index 9039a08..0000000
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/AuditableChild1.java
+++ /dev/null
@@ -1,27 +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.cayenne.lifecycle.db;
-
-import org.apache.cayenne.lifecycle.db.auto._AuditableChild1;
-
-public class AuditableChild1 extends _AuditableChild1 {
-
- private static final long serialVersionUID = 7967782239405764614L;
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/AuditableChild2.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/AuditableChild2.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/AuditableChild2.java
deleted file mode 100644
index 547f8fc..0000000
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/AuditableChild2.java
+++ /dev/null
@@ -1,25 +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.cayenne.lifecycle.db;
-
-import org.apache.cayenne.lifecycle.db.auto._AuditableChild2;
-
-public class AuditableChild2 extends _AuditableChild2 {
- private static final long serialVersionUID = 1L;
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/AuditableChild3.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/AuditableChild3.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/AuditableChild3.java
deleted file mode 100644
index 556eaaa..0000000
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/AuditableChild3.java
+++ /dev/null
@@ -1,27 +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.cayenne.lifecycle.db;
-
-import org.apache.cayenne.lifecycle.audit.AuditableChild;
-import org.apache.cayenne.lifecycle.db.auto._AuditableChild3;
-
-@AuditableChild(value = "parent", ignoredProperties = "charProperty1")
-public class AuditableChild3 extends _AuditableChild3 {
- private static final long serialVersionUID = 1L;
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/AuditableChildUuid.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/AuditableChildUuid.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/AuditableChildUuid.java
deleted file mode 100644
index 38becd8..0000000
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/AuditableChildUuid.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.cayenne.lifecycle.db;
-
-import org.apache.cayenne.lifecycle.audit.AuditableChild;
-import org.apache.cayenne.lifecycle.db.auto._AuditableChildUuid;
-import org.apache.cayenne.lifecycle.relationship.ObjectIdRelationship;
-
-@ObjectIdRelationship("uuid")
-@AuditableChild(objectIdRelationship = "uuid")
-public class AuditableChildUuid extends _AuditableChildUuid {
-
- private static final long serialVersionUID = 1L;
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_Auditable1.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_Auditable1.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_Auditable1.java
deleted file mode 100644
index df212a1..0000000
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_Auditable1.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.apache.cayenne.lifecycle.db.auto;
-
-import java.util.List;
-
-import org.apache.cayenne.CayenneDataObject;
-import org.apache.cayenne.exp.Property;
-import org.apache.cayenne.lifecycle.db.AuditableChild1;
-
-/**
- * Class _Auditable1 was generated by Cayenne.
- * It is probably a good idea to avoid changing this class manually,
- * since it may be overwritten next time code is regenerated.
- * If you need to make any customizations, please use subclass.
- */
-public abstract class _Auditable1 extends CayenneDataObject {
-
- private static final long serialVersionUID = 1L;
-
- public static final String ID_PK_COLUMN = "ID";
-
- public static final Property<String> CHAR_PROPERTY1 = Property.create("charProperty1", String.class);
- public static final Property<List<AuditableChild1>> CHILDREN1 = Property.create("children1", List.class);
-
- public void setCharProperty1(String charProperty1) {
- writeProperty("charProperty1", charProperty1);
- }
- public String getCharProperty1() {
- return (String)readProperty("charProperty1");
- }
-
- public void addToChildren1(AuditableChild1 obj) {
- addToManyTarget("children1", obj, true);
- }
- public void removeFromChildren1(AuditableChild1 obj) {
- removeToManyTarget("children1", obj, true);
- }
- @SuppressWarnings("unchecked")
- public List<AuditableChild1> getChildren1() {
- return (List<AuditableChild1>)readProperty("children1");
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_Auditable2.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_Auditable2.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_Auditable2.java
deleted file mode 100644
index ea7a51b..0000000
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_Auditable2.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.apache.cayenne.lifecycle.db.auto;
-
-import java.util.List;
-
-import org.apache.cayenne.CayenneDataObject;
-import org.apache.cayenne.exp.Property;
-import org.apache.cayenne.lifecycle.db.AuditableChild3;
-
-/**
- * Class _Auditable2 was generated by Cayenne.
- * It is probably a good idea to avoid changing this class manually,
- * since it may be overwritten next time code is regenerated.
- * If you need to make any customizations, please use subclass.
- */
-public abstract class _Auditable2 extends CayenneDataObject {
-
- private static final long serialVersionUID = 1L;
-
- public static final String ID_PK_COLUMN = "ID";
-
- public static final Property<String> CHAR_PROPERTY1 = Property.create("charProperty1", String.class);
- public static final Property<String> CHAR_PROPERTY2 = Property.create("charProperty2", String.class);
- public static final Property<List<AuditableChild3>> CHILDREN = Property.create("children", List.class);
-
- public void setCharProperty1(String charProperty1) {
- writeProperty("charProperty1", charProperty1);
- }
- public String getCharProperty1() {
- return (String)readProperty("charProperty1");
- }
-
- public void setCharProperty2(String charProperty2) {
- writeProperty("charProperty2", charProperty2);
- }
- public String getCharProperty2() {
- return (String)readProperty("charProperty2");
- }
-
- public void addToChildren(AuditableChild3 obj) {
- addToManyTarget("children", obj, true);
- }
- public void removeFromChildren(AuditableChild3 obj) {
- removeToManyTarget("children", obj, true);
- }
- @SuppressWarnings("unchecked")
- public List<AuditableChild3> getChildren() {
- return (List<AuditableChild3>)readProperty("children");
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_AuditableChild1.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_AuditableChild1.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_AuditableChild1.java
deleted file mode 100644
index 96f21b0..0000000
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_AuditableChild1.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.apache.cayenne.lifecycle.db.auto;
-
-import org.apache.cayenne.CayenneDataObject;
-import org.apache.cayenne.exp.Property;
-import org.apache.cayenne.lifecycle.db.Auditable1;
-
-/**
- * Class _AuditableChild1 was generated by Cayenne.
- * It is probably a good idea to avoid changing this class manually,
- * since it may be overwritten next time code is regenerated.
- * If you need to make any customizations, please use subclass.
- */
-public abstract class _AuditableChild1 extends CayenneDataObject {
-
- private static final long serialVersionUID = 1L;
-
- public static final String ID_PK_COLUMN = "ID";
-
- public static final Property<String> CHAR_PROPERTY1 = Property.create("charProperty1", String.class);
- public static final Property<Auditable1> PARENT = Property.create("parent", Auditable1.class);
-
- public void setCharProperty1(String charProperty1) {
- writeProperty("charProperty1", charProperty1);
- }
- public String getCharProperty1() {
- return (String)readProperty("charProperty1");
- }
-
- public void setParent(Auditable1 parent) {
- setToOneTarget("parent", parent, true);
- }
-
- public Auditable1 getParent() {
- return (Auditable1)readProperty("parent");
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_AuditableChild2.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_AuditableChild2.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_AuditableChild2.java
deleted file mode 100644
index 9a5cc2c..0000000
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_AuditableChild2.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.apache.cayenne.lifecycle.db.auto;
-
-import org.apache.cayenne.CayenneDataObject;
-import org.apache.cayenne.exp.Property;
-import org.apache.cayenne.lifecycle.db.Auditable1;
-
-/**
- * Class _AuditableChild2 was generated by Cayenne.
- * It is probably a good idea to avoid changing this class manually,
- * since it may be overwritten next time code is regenerated.
- * If you need to make any customizations, please use subclass.
- */
-public abstract class _AuditableChild2 extends CayenneDataObject {
-
- private static final long serialVersionUID = 1L;
-
- public static final String ID_PK_COLUMN = "ID";
-
- public static final Property<String> CHAR_PROPERTY1 = Property.create("charProperty1", String.class);
- public static final Property<Auditable1> PARENT = Property.create("parent", Auditable1.class);
-
- public void setCharProperty1(String charProperty1) {
- writeProperty("charProperty1", charProperty1);
- }
- public String getCharProperty1() {
- return (String)readProperty("charProperty1");
- }
-
- public void setParent(Auditable1 parent) {
- setToOneTarget("parent", parent, true);
- }
-
- public Auditable1 getParent() {
- return (Auditable1)readProperty("parent");
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_AuditableChild3.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_AuditableChild3.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_AuditableChild3.java
deleted file mode 100644
index fb2f26a..0000000
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_AuditableChild3.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.apache.cayenne.lifecycle.db.auto;
-
-import org.apache.cayenne.CayenneDataObject;
-import org.apache.cayenne.exp.Property;
-import org.apache.cayenne.lifecycle.db.Auditable2;
-
-/**
- * Class _AuditableChild3 was generated by Cayenne.
- * It is probably a good idea to avoid changing this class manually,
- * since it may be overwritten next time code is regenerated.
- * If you need to make any customizations, please use subclass.
- */
-public abstract class _AuditableChild3 extends CayenneDataObject {
-
- private static final long serialVersionUID = 1L;
-
- public static final String ID_PK_COLUMN = "ID";
-
- public static final Property<String> CHAR_PROPERTY1 = Property.create("charProperty1", String.class);
- public static final Property<String> CHAR_PROPERTY2 = Property.create("charProperty2", String.class);
- public static final Property<Auditable2> PARENT = Property.create("parent", Auditable2.class);
-
- public void setCharProperty1(String charProperty1) {
- writeProperty("charProperty1", charProperty1);
- }
- public String getCharProperty1() {
- return (String)readProperty("charProperty1");
- }
-
- public void setCharProperty2(String charProperty2) {
- writeProperty("charProperty2", charProperty2);
- }
- public String getCharProperty2() {
- return (String)readProperty("charProperty2");
- }
-
- public void setParent(Auditable2 parent) {
- setToOneTarget("parent", parent, true);
- }
-
- public Auditable2 getParent() {
- return (Auditable2)readProperty("parent");
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_AuditableChildUuid.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_AuditableChildUuid.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_AuditableChildUuid.java
deleted file mode 100644
index d269c8a..0000000
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/db/auto/_AuditableChildUuid.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.apache.cayenne.lifecycle.db.auto;
-
-import org.apache.cayenne.CayenneDataObject;
-import org.apache.cayenne.exp.Property;
-
-/**
- * Class _AuditableChildUuid was generated by Cayenne.
- * It is probably a good idea to avoid changing this class manually,
- * since it may be overwritten next time code is regenerated.
- * If you need to make any customizations, please use subclass.
- */
-public abstract class _AuditableChildUuid extends CayenneDataObject {
-
- private static final long serialVersionUID = 1L;
-
- public static final String ID_PK_COLUMN = "ID";
-
- public static final Property<String> CHAR_PROPERTY1 = Property.create("charProperty1", String.class);
- public static final Property<String> CHAR_PROPERTY2 = Property.create("charProperty2", String.class);
- public static final Property<String> UUID = Property.create("uuid", String.class);
-
- public void setCharProperty1(String charProperty1) {
- writeProperty("charProperty1", charProperty1);
- }
- public String getCharProperty1() {
- return (String)readProperty("charProperty1");
- }
-
- public void setCharProperty2(String charProperty2) {
- writeProperty("charProperty2", charProperty2);
- }
- public String getCharProperty2() {
- return (String)readProperty("charProperty2");
- }
-
- public void setUuid(String uuid) {
- writeProperty("uuid", uuid);
- }
- public String getUuid() {
- return (String)readProperty("uuid");
- }
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ece129d/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/unit/AuditableServerCase.java
----------------------------------------------------------------------
diff --git a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/unit/AuditableServerCase.java b/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/unit/AuditableServerCase.java
deleted file mode 100644
index b63f1f0..0000000
--- a/cayenne-lifecycle/src/test/java/org/apache/cayenne/lifecycle/unit/AuditableServerCase.java
+++ /dev/null
@@ -1,83 +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.cayenne.lifecycle.unit;
-
-import org.apache.cayenne.configuration.server.ServerRuntime;
-import org.apache.cayenne.configuration.server.ServerRuntimeBuilder;
-import org.apache.cayenne.test.jdbc.DBHelper;
-import org.apache.cayenne.test.jdbc.TableHelper;
-import org.junit.After;
-import org.junit.Before;
-
-/**
- * A superclass of integration tests for cayenne-lifecycle.
- */
-public abstract class AuditableServerCase {
-
- protected ServerRuntime runtime;
-
- protected TableHelper auditable1;
- protected TableHelper auditableChild1;
- protected TableHelper auditableChild2;
-
- protected TableHelper auditable2;
- protected TableHelper auditableChild3;
- protected TableHelper auditableChildUuid;
-
- @Before
- public void startCayenne() throws Exception {
- this.runtime = configureCayenne().build();
-
- DBHelper dbHelper = new DBHelper(runtime.getDataSource());
-
- this.auditable1 = new TableHelper(dbHelper, "AUDITABLE1").setColumns("ID", "CHAR_PROPERTY1");
-
- this.auditableChild1 = new TableHelper(dbHelper, "AUDITABLE_CHILD1").setColumns("ID", "AUDITABLE1_ID",
- "CHAR_PROPERTY1");
-
- this.auditableChild2 = new TableHelper(dbHelper, "AUDITABLE_CHILD2").setColumns("ID", "AUDITABLE1_ID",
- "CHAR_PROPERTY1");
-
- this.auditable2 = new TableHelper(dbHelper, "AUDITABLE2").setColumns("ID", "CHAR_PROPERTY1", "CHAR_PROPERTY2");
-
- this.auditableChild3 = new TableHelper(dbHelper, "AUDITABLE_CHILD3").setColumns("ID", "AUDITABLE2_ID",
- "CHAR_PROPERTY1", "CHAR_PROPERTY2");
-
- this.auditableChildUuid = new TableHelper(dbHelper, "AUDITABLE_CHILD_UUID").setColumns("ID", "UUID",
- "CHAR_PROPERTY1", "CHAR_PROPERTY2");
-
- this.auditableChild1.deleteAll();
- this.auditableChild2.deleteAll();
- this.auditable1.deleteAll();
- this.auditableChild3.deleteAll();
- this.auditable2.deleteAll();
- this.auditableChildUuid.deleteAll();
- }
-
- protected ServerRuntimeBuilder configureCayenne() {
- return ServerRuntime.builder().addConfig("cayenne-lifecycle.xml");
- }
-
- @After
- public void shutdownCayenne() {
- if (runtime != null) {
- runtime.shutdown();
- }
- }
-}