diff --git a/auditlog/src/main/java/org/genesys/blocks/auditlog/component/AuditTrailInterceptor.java b/auditlog/src/main/java/org/genesys/blocks/auditlog/component/AuditTrailInterceptor.java index 2aff62a9ca533521f740cc71978f581edff622da..7d1e096b9a2b71478bcb2a954d12361d8abde5e1 100644 --- a/auditlog/src/main/java/org/genesys/blocks/auditlog/component/AuditTrailInterceptor.java +++ b/auditlog/src/main/java/org/genesys/blocks/auditlog/component/AuditTrailInterceptor.java @@ -786,7 +786,7 @@ public class AuditTrailInterceptor extends EmptyInterceptor implements Initializ @Override public Boolean isTransient(final Object entity) { if (entity instanceof BasicModel) { - return !((BasicModel) entity).isPersisted(); + return ((BasicModel) entity).isNew(); } // TODO Use Spring field access methods? try { diff --git a/auditlog/src/test/java/org/genesys/blocks/auditlog/service/AuditTrailServiceTest.java b/auditlog/src/test/java/org/genesys/blocks/auditlog/service/AuditTrailServiceTest.java index 30e8b6ef2f8693a9c300821d2335f698c3a0fdbc..a66682f9d3872b6a3226a0c27e57557cf65acdd0 100644 --- a/auditlog/src/test/java/org/genesys/blocks/auditlog/service/AuditTrailServiceTest.java +++ b/auditlog/src/test/java/org/genesys/blocks/auditlog/service/AuditTrailServiceTest.java @@ -122,7 +122,7 @@ public class AuditTrailServiceTest extends ServiceTest { public void testTransactionalListQuery() { ExampleAuditedEntity entity = exampleAuditedEntityService.testList(); assertThat(entity.getId(), not(nullValue())); - assertThat(entity.isPersisted(), is(true)); + assertThat(entity.isNew(), is(false)); assertThat(listAuditLogs(entity), hasSize(1)); entity = exampleAuditedEntityService.get(entity.getId()); @@ -140,7 +140,7 @@ public class AuditTrailServiceTest extends ServiceTest { public void testDelete() { ExampleAuditedEntity entity = exampleAuditedEntityService.testList(); assertThat(entity.getId(), not(nullValue())); - assertThat(entity.isPersisted(), is(true)); + assertThat(entity.isNew(), is(false)); assertThat(entity.getName(), is("Test 3")); assertThat(listAuditLogs(entity), hasSize(1)); diff --git a/core/src/main/java/org/genesys/blocks/model/BasicModel.java b/core/src/main/java/org/genesys/blocks/model/BasicModel.java index 3193015bccc084cd041a17fbd13ac8d384863587..82659eddf247aa22ddb02efe3e0448db821e1baf 100644 --- a/core/src/main/java/org/genesys/blocks/model/BasicModel.java +++ b/core/src/main/java/org/genesys/blocks/model/BasicModel.java @@ -22,6 +22,8 @@ import javax.persistence.Id; import javax.persistence.MappedSuperclass; import javax.persistence.Transient; +import org.springframework.data.domain.Persistable; + import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonView; @@ -29,7 +31,7 @@ import com.fasterxml.jackson.annotation.JsonView; * The Class BasicModel. */ @MappedSuperclass -public class BasicModel extends EmptyModel { +public class BasicModel extends EmptyModel implements Persistable { /** The Constant serialVersionUID. */ private static final long serialVersionUID = 2709998920148999956L; @@ -39,7 +41,7 @@ public class BasicModel extends EmptyModel { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id", unique = true, nullable = false) - private Long id = InMemoryIdGenerator.nextId(); + private Long id = null; // InMemoryIdGenerator.nextId(); /* * (non-Javadoc) @@ -68,8 +70,8 @@ public class BasicModel extends EmptyModel { */ @JsonIgnore @Transient - public final boolean isPersisted() { - return (id != null) && (id.longValue() > 0); + public final boolean isNew() { + return (id == null) || (id.longValue() < 0); } /* @@ -100,10 +102,8 @@ public class BasicModel extends EmptyModel { return false; } final BasicModel other = (BasicModel) obj; - if (id == null) { - if (other.id != null) { - return false; - } + if (id == null || other.id == null) { + return false; } else if (!id.equals(other.id)) { return false; } diff --git a/core/src/main/java/org/genesys/blocks/model/VersionedModel.java b/core/src/main/java/org/genesys/blocks/model/VersionedModel.java index 64c184048ee1d3b9eead898b83549adf554932ee..aa9ebefa24f68bf81b8752723554c59c8d481383 100644 --- a/core/src/main/java/org/genesys/blocks/model/VersionedModel.java +++ b/core/src/main/java/org/genesys/blocks/model/VersionedModel.java @@ -103,8 +103,9 @@ public abstract class VersionedModel extends BasicModel implements Activatable { if (getClass() != obj.getClass()) return false; VersionedModel other = (VersionedModel) obj; - if (active != other.active) - return false; + // We're only interested in id+version combination + // if (active != other.active) + // return false; if (version == null) { if (other.version != null) return false; diff --git a/core/src/test/java/org/genesys/blocks/tests/model/UuidModelTest.java b/core/src/test/java/org/genesys/blocks/tests/model/UuidModelTest.java index 1fd8c6d099ca1d65a3db12abd929d2ddac57e43e..48f3b649264e245d30a081bb5d874732903e6d87 100644 --- a/core/src/test/java/org/genesys/blocks/tests/model/UuidModelTest.java +++ b/core/src/test/java/org/genesys/blocks/tests/model/UuidModelTest.java @@ -41,7 +41,7 @@ public class UuidModelTest extends ServiceTest { @Test public void testConstructor() { UuidEntity entity = new UuidEntity(); - assertThat(entity.getId(), not(nullValue())); + assertThat(entity.getId(), nullValue()); assertThat(entity.getUuid(), is(nullValue())); assertThat(entity.getVersion(), nullValue()); } diff --git a/core/src/test/java/org/genesys/blocks/tests/model/VersionedModelTest.java b/core/src/test/java/org/genesys/blocks/tests/model/VersionedModelTest.java index 06d14c320abf7d966e30a8b263c575fdfac821b5..81c9a571befcf81dd7349471da4b7b461e5f08b1 100644 --- a/core/src/test/java/org/genesys/blocks/tests/model/VersionedModelTest.java +++ b/core/src/test/java/org/genesys/blocks/tests/model/VersionedModelTest.java @@ -39,7 +39,7 @@ public class VersionedModelTest extends ServiceTest { @Test public void testConstructor() { VersionedEntity entity = new VersionedEntity(); - assertThat(entity.getId(), not(nullValue())); + assertThat(entity.getId(), nullValue()); assertThat(entity.getVersion(), nullValue()); assertThat(entity.isActive(), is(true)); } diff --git a/security/src/main/java/org/genesys/blocks/security/service/impl/CustomAclServiceImpl.java b/security/src/main/java/org/genesys/blocks/security/service/impl/CustomAclServiceImpl.java index cf5bb54d019c9dc030cc42d338fe276cb8459fa7..58c55351e3e79e9b5ea68464677fe1b0f1e693b9 100644 --- a/security/src/main/java/org/genesys/blocks/security/service/impl/CustomAclServiceImpl.java +++ b/security/src/main/java/org/genesys/blocks/security/service/impl/CustomAclServiceImpl.java @@ -168,7 +168,7 @@ public class CustomAclServiceImpl implements CustomAclService { final AclSid ownerSid = SecurityContextUtil.getCurrentUser(); if (ownerSid == null) { LOG.warn("No SID in security context, not assigning creator permissions"); - } else if (!ownerSid.isPersisted()) { + } else if (ownerSid.isNew()) { LOG.warn("Owner SID not persisted, not assigning creator permissions"); } else { objectIdentity.setOwnerSid(ownerSid); @@ -202,7 +202,7 @@ public class CustomAclServiceImpl implements CustomAclService { if (objectIdentity.getOwnerSid() == null) { final AclSid ownerSid = SecurityContextUtil.getCurrentUser(); - if (ownerSid != null && ownerSid.isPersisted()) { + if (ownerSid != null && ! ownerSid.isNew()) { objectIdentity.setOwnerSid(ownerSid); // Grant permissions to owner