Author: adamw
Date: 2008-08-16 08:44:50 -0400 (Sat, 16 Aug 2008)
New Revision: 110
Added:
trunk/src/main/org/jboss/envers/configuration/metadata/PersistentClassVersioningData.java
trunk/src/main/org/jboss/envers/configuration/metadata/PropertyStoreInfo.java
Removed:
trunk/src/main/org/jboss/envers/configuration/metadata/data/
Modified:
trunk/src/main/org/jboss/envers/configuration/VersionsConfiguration.java
trunk/src/main/org/jboss/envers/configuration/metadata/AnnotationsMetadataReader.java
trunk/src/main/org/jboss/envers/configuration/metadata/VersionsMetadataGenerator.java
trunk/src/main/org/jboss/envers/mapper/id/relation/OneToManyIdMapper.java
trunk/src/main/org/jboss/envers/mapper/id/relation/ToOneIdMapper.java
trunk/src/main/org/jboss/envers/query/VersionsQueryCreator.java
trunk/src/main/org/jboss/envers/query/impl/AbstractVersionsQuery.java
trunk/src/main/org/jboss/envers/query/impl/EntitiesAtRevisionQuery.java
trunk/src/main/org/jboss/envers/query/impl/RevisionsOfEntityQuery.java
trunk/src/main/org/jboss/envers/reader/VersionsReaderImpl.java
trunk/src/main/org/jboss/envers/reader/VersionsReaderImplementor.java
trunk/src/main/org/jboss/envers/reader/lazy/ToOneDelegateSessionImplementor.java
trunk/src/main/org/jboss/envers/revisioninfo/RevisionInfoQueryCreator.java
Log:
ENVERS-37: versions reader no longer is a holder of Session
Modified: trunk/src/main/org/jboss/envers/configuration/VersionsConfiguration.java
===================================================================
--- trunk/src/main/org/jboss/envers/configuration/VersionsConfiguration.java 2008-08-16
12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/configuration/VersionsConfiguration.java 2008-08-16
12:44:50 UTC (rev 110)
@@ -26,7 +26,7 @@
import org.hibernate.MappingException;
import org.jboss.envers.configuration.metadata.VersionsMetadataGenerator;
import org.jboss.envers.configuration.metadata.AnnotationsMetadataReader;
-import org.jboss.envers.configuration.metadata.data.PersistentClassVersioningData;
+import org.jboss.envers.configuration.metadata.PersistentClassVersioningData;
import org.jboss.envers.configuration.entities.EntitiesConfigurations;
import org.jboss.envers.synchronization.VersionsSyncManager;
import org.jboss.envers.tools.graph.GraphTopologicalSort;
@@ -75,7 +75,7 @@
return entCfg;
}
- public RevisionInfoQueryCreator getRevisionInfoQueryGenerator() {
+ public RevisionInfoQueryCreator getRevisionInfoQueryCreator() {
return revisionInfoQueryCreator;
}
Modified:
trunk/src/main/org/jboss/envers/configuration/metadata/AnnotationsMetadataReader.java
===================================================================
---
trunk/src/main/org/jboss/envers/configuration/metadata/AnnotationsMetadataReader.java 2008-08-16
12:33:03 UTC (rev 109)
+++
trunk/src/main/org/jboss/envers/configuration/metadata/AnnotationsMetadataReader.java 2008-08-16
12:44:50 UTC (rev 110)
@@ -24,7 +24,7 @@
import org.jboss.envers.tools.reflection.YClass;
import org.jboss.envers.tools.reflection.YProperty;
import org.jboss.envers.tools.reflection.YReflectionManager;
-import org.jboss.envers.configuration.metadata.data.PersistentClassVersioningData;
+import org.jboss.envers.configuration.metadata.PersistentClassVersioningData;
import org.jboss.envers.Versioned;
import org.jboss.envers.VersionsTable;
import org.jboss.envers.SecondaryVersionsTable;
Copied:
trunk/src/main/org/jboss/envers/configuration/metadata/PersistentClassVersioningData.java
(from rev 104,
trunk/src/main/org/jboss/envers/configuration/metadata/data/PersistentClassVersioningData.java)
===================================================================
---
trunk/src/main/org/jboss/envers/configuration/metadata/PersistentClassVersioningData.java
(rev 0)
+++
trunk/src/main/org/jboss/envers/configuration/metadata/PersistentClassVersioningData.java 2008-08-16
12:44:50 UTC (rev 110)
@@ -0,0 +1,49 @@
+/*
+ * Envers.
http://www.jboss.org/envers
+ *
+ * Copyright 2008 Red Hat Middleware, LLC. All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * Red Hat Author(s): Adam Warski
+ */
+package org.jboss.envers.configuration.metadata;
+
+import org.jboss.envers.ModificationStore;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+*/
+public class PersistentClassVersioningData {
+ public PersistentClassVersioningData() {
+ propertyStoreInfo = new PropertyStoreInfo(new HashMap<String,
ModificationStore>());
+ secondaryTableDictionary = new HashMap<String, String>();
+ }
+
+ public PropertyStoreInfo propertyStoreInfo;
+ public String versionsTableName;
+ public String schema;
+ public String catalog;
+ public Map<String, String> secondaryTableDictionary;
+
+ public boolean isVersioned() {
+ if (propertyStoreInfo.propertyStores.size() > 0) { return true; }
+ if (propertyStoreInfo.defaultStore != null) { return true; }
+ return false;
+ }
+}
Copied: trunk/src/main/org/jboss/envers/configuration/metadata/PropertyStoreInfo.java
(from rev 103,
trunk/src/main/org/jboss/envers/configuration/metadata/data/PropertyStoreInfo.java)
===================================================================
--- trunk/src/main/org/jboss/envers/configuration/metadata/PropertyStoreInfo.java
(rev 0)
+++
trunk/src/main/org/jboss/envers/configuration/metadata/PropertyStoreInfo.java 2008-08-16
12:44:50 UTC (rev 110)
@@ -0,0 +1,46 @@
+/*
+ * Envers.
http://www.jboss.org/envers
+ *
+ * Copyright 2008 Red Hat Middleware, LLC. All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * Red Hat Author(s): Adam Warski
+ */
+package org.jboss.envers.configuration.metadata;
+
+import org.jboss.envers.ModificationStore;
+
+import java.util.Map;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+*/
+public class PropertyStoreInfo {
+ // Not null if the whole class is versioned
+ public ModificationStore defaultStore;
+
+ // Maps property names to their stores defined in per-field versioned annotations
+ public Map<String, ModificationStore> propertyStores;
+
+ public PropertyStoreInfo(Map<String, ModificationStore> propertyStores) {
+ this.propertyStores = propertyStores;
+ }
+
+ public PropertyStoreInfo(ModificationStore defaultStore, Map<String,
ModificationStore> propertyStores) {
+ this.defaultStore = defaultStore;
+ this.propertyStores = propertyStores;
+ }
+}
Modified:
trunk/src/main/org/jboss/envers/configuration/metadata/VersionsMetadataGenerator.java
===================================================================
---
trunk/src/main/org/jboss/envers/configuration/metadata/VersionsMetadataGenerator.java 2008-08-16
12:33:03 UTC (rev 109)
+++
trunk/src/main/org/jboss/envers/configuration/metadata/VersionsMetadataGenerator.java 2008-08-16
12:44:50 UTC (rev 110)
@@ -44,8 +44,8 @@
import org.jboss.envers.ModificationStore;
import org.jboss.envers.tools.log.YLog;
import org.jboss.envers.tools.log.YLogManager;
-import org.jboss.envers.configuration.metadata.data.PersistentClassVersioningData;
-import org.jboss.envers.configuration.metadata.data.PropertyStoreInfo;
+import org.jboss.envers.configuration.metadata.PersistentClassVersioningData;
+import org.jboss.envers.configuration.metadata.PropertyStoreInfo;
import org.jboss.envers.exception.VersionsException;
import java.util.Iterator;
Modified: trunk/src/main/org/jboss/envers/mapper/id/relation/OneToManyIdMapper.java
===================================================================
--- trunk/src/main/org/jboss/envers/mapper/id/relation/OneToManyIdMapper.java 2008-08-16
12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/mapper/id/relation/OneToManyIdMapper.java 2008-08-16
12:44:50 UTC (rev 110)
@@ -37,9 +37,9 @@
* @author Adam Warski (adam at warski dot org)
*/
public class OneToManyIdMapper implements PropertyMapper {
- private String owningReferencePropertyName;
- private String owningEntityName;
- private String propertyName;
+ private final String owningReferencePropertyName;
+ private final String owningEntityName;
+ private final String propertyName;
public OneToManyIdMapper(String owningReferencePropertyName, String owningEntityName,
String propertyName) {
this.owningReferencePropertyName = owningReferencePropertyName;
Modified: trunk/src/main/org/jboss/envers/mapper/id/relation/ToOneIdMapper.java
===================================================================
--- trunk/src/main/org/jboss/envers/mapper/id/relation/ToOneIdMapper.java 2008-08-16
12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/mapper/id/relation/ToOneIdMapper.java 2008-08-16
12:44:50 UTC (rev 110)
@@ -36,9 +36,9 @@
* @author Adam Warski (adam at warski dot org)
*/
public class ToOneIdMapper implements PropertyMapper {
- private IdMapper delegate;
- private String propertyName;
- private String referencedEntityName;
+ private final IdMapper delegate;
+ private final String propertyName;
+ private final String referencedEntityName;
public ToOneIdMapper(IdMapper delegate, String propertyName, String
referencedEntityName) {
this.delegate = delegate;
Modified: trunk/src/main/org/jboss/envers/query/VersionsQueryCreator.java
===================================================================
--- trunk/src/main/org/jboss/envers/query/VersionsQueryCreator.java 2008-08-16 12:33:03
UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/query/VersionsQueryCreator.java 2008-08-16 12:44:50
UTC (rev 110)
@@ -26,16 +26,19 @@
import org.jboss.envers.query.impl.RevisionsOfEntityQuery;
import static org.jboss.envers.tools.ArgumentsTools.*;
import org.jboss.envers.configuration.VersionsConfiguration;
+import org.hibernate.Session;
/**
* @author Adam Warski (adam at warski dot org)
*/
public class VersionsQueryCreator {
private final VersionsConfiguration verCfg;
+ private final Session session;
private final VersionsReaderImplementor versionsReaderImplementor;
- public VersionsQueryCreator(VersionsConfiguration verCfg, VersionsReaderImplementor
versionsReaderImplementor) {
+ public VersionsQueryCreator(VersionsConfiguration verCfg, Session session,
VersionsReaderImplementor versionsReaderImplementor) {
this.verCfg = verCfg;
+ this.session = session;
this.versionsReaderImplementor = versionsReaderImplementor;
}
@@ -51,7 +54,7 @@
public VersionsQuery forEntitiesAtRevision(Class<?> c, Number revision) {
checkNotNull(revision, "Entity revision");
checkPositive(revision, "Entity revision");
- return new EntitiesAtRevisionQuery(verCfg, versionsReaderImplementor, c,
revision);
+ return new EntitiesAtRevisionQuery(verCfg, session, versionsReaderImplementor, c,
revision);
}
/**
@@ -70,6 +73,6 @@
* unless an order or projection is added.
*/
public VersionsQuery forRevisionsOfEntity(Class<?> c, boolean
selectEntitiesOnly, boolean selectDeletedEntities) {
- return new RevisionsOfEntityQuery(verCfg, versionsReaderImplementor, c,
selectEntitiesOnly,selectDeletedEntities);
+ return new RevisionsOfEntityQuery(verCfg, session, versionsReaderImplementor, c,
selectEntitiesOnly,selectDeletedEntities);
}
}
Modified: trunk/src/main/org/jboss/envers/query/impl/AbstractVersionsQuery.java
===================================================================
--- trunk/src/main/org/jboss/envers/query/impl/AbstractVersionsQuery.java 2008-08-16
12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/query/impl/AbstractVersionsQuery.java 2008-08-16
12:44:50 UTC (rev 110)
@@ -31,10 +31,7 @@
import org.jboss.envers.configuration.VersionsConfiguration;
import org.hibernate.criterion.Projection;
import org.hibernate.criterion.Order;
-import org.hibernate.Criteria;
-import org.hibernate.FlushMode;
-import org.hibernate.CacheMode;
-import org.hibernate.LockMode;
+import org.hibernate.*;
import javax.persistence.NonUniqueResultException;
import javax.persistence.NoResultException;
@@ -58,7 +55,8 @@
protected final VersionsConfiguration verCfg;
- protected AbstractVersionsQuery(VersionsConfiguration verCfg,
VersionsReaderImplementor versionsReader, Class<?> cls) {
+ protected AbstractVersionsQuery(VersionsConfiguration verCfg, Session session,
+ VersionsReaderImplementor versionsReader,
Class<?> cls) {
this.verCfg = verCfg;
criterions = new ArrayList<VersionsCriterion>();
@@ -66,7 +64,7 @@
entityName = cls.getName();
versionsEntityName = verCfg.getVerEntCfg().getVersionsEntityName(entityName);
- versionsCriteria = versionsReader.getSession().createCriteria(versionsEntityName,
"e");
+ versionsCriteria = session.createCriteria(versionsEntityName, "e");
}
public abstract List list() throws VersionsException;
Modified: trunk/src/main/org/jboss/envers/query/impl/EntitiesAtRevisionQuery.java
===================================================================
--- trunk/src/main/org/jboss/envers/query/impl/EntitiesAtRevisionQuery.java 2008-08-16
12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/query/impl/EntitiesAtRevisionQuery.java 2008-08-16
12:44:50 UTC (rev 110)
@@ -27,6 +27,7 @@
import org.jboss.envers.configuration.VersionsEntitiesConfiguration;
import org.jboss.envers.configuration.VersionsConfiguration;
import org.hibernate.criterion.*;
+import org.hibernate.Session;
import java.util.List;
import java.util.ArrayList;
@@ -37,9 +38,10 @@
public class EntitiesAtRevisionQuery extends AbstractVersionsQuery {
private Number revision;
- public EntitiesAtRevisionQuery(VersionsConfiguration verCfg,
VersionsReaderImplementor versionsReader, Class<?> cls,
+ public EntitiesAtRevisionQuery(VersionsConfiguration verCfg, Session session,
+ VersionsReaderImplementor versionsReader,
Class<?> cls,
Number revision) {
- super(verCfg, versionsReader, cls);
+ super(verCfg, session, versionsReader, cls);
this.revision = revision;
}
Modified: trunk/src/main/org/jboss/envers/query/impl/RevisionsOfEntityQuery.java
===================================================================
--- trunk/src/main/org/jboss/envers/query/impl/RevisionsOfEntityQuery.java 2008-08-16
12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/query/impl/RevisionsOfEntityQuery.java 2008-08-16
12:44:50 UTC (rev 110)
@@ -29,6 +29,7 @@
import org.jboss.envers.configuration.VersionsConfiguration;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Property;
+import org.hibernate.Session;
import java.util.List;
import java.util.ArrayList;
@@ -41,9 +42,11 @@
private final boolean selectEntitiesOnly;
private final boolean selectDeletedEntities;
- public RevisionsOfEntityQuery(VersionsConfiguration verCfg, VersionsReaderImplementor
versionsReader,
- Class<?> cls, boolean selectEntitiesOnly, boolean
selectDeletedEntities) {
- super(verCfg, versionsReader, cls);
+ public RevisionsOfEntityQuery(VersionsConfiguration verCfg, Session session,
+ VersionsReaderImplementor versionsReader,
+ Class<?> cls, boolean selectEntitiesOnly,
+ boolean selectDeletedEntities) {
+ super(verCfg, session, versionsReader, cls);
this.selectEntitiesOnly = selectEntitiesOnly;
this.selectDeletedEntities = selectDeletedEntities;
Modified: trunk/src/main/org/jboss/envers/reader/VersionsReaderImpl.java
===================================================================
--- trunk/src/main/org/jboss/envers/reader/VersionsReaderImpl.java 2008-08-16 12:33:03 UTC
(rev 109)
+++ trunk/src/main/org/jboss/envers/reader/VersionsReaderImpl.java 2008-08-16 12:44:50 UTC
(rev 110)
@@ -64,10 +64,6 @@
return sessionImplementor;
}
- public Session getSession() {
- return session;
- }
-
@SuppressWarnings({"unchecked"})
public <T> T find(Class<T> cls, Object primaryKey, Number revision)
throws
IllegalArgumentException, NotVersionedException, IllegalStateException {
@@ -119,7 +115,7 @@
checkPositive(revision, "Entity revision");
checkSession();
- Query query =
verCfg.getRevisionInfoQueryGenerator().getRevisionDateQuery(session, revision);
+ Query query = verCfg.getRevisionInfoQueryCreator().getRevisionDateQuery(session,
revision);
try {
Long timestamp = (Long) query.uniqueResult();
@@ -137,7 +133,7 @@
checkNotNull(date, "Date of revision");
checkSession();
- Query query =
verCfg.getRevisionInfoQueryGenerator().getRevisionNumberForDateQuery(session, date);
+ Query query =
verCfg.getRevisionInfoQueryCreator().getRevisionNumberForDateQuery(session, date);
try {
Number res = (Number) query.uniqueResult();
@@ -158,7 +154,7 @@
checkPositive(revision, "Entity revision");
checkSession();
- Query query = verCfg.getRevisionInfoQueryGenerator().getRevisionQuery(session,
revision);
+ Query query = verCfg.getRevisionInfoQueryCreator().getRevisionQuery(session,
revision);
try {
T revisionData = (T) query.uniqueResult();
@@ -174,6 +170,6 @@
}
public VersionsQueryCreator createQuery() {
- return new VersionsQueryCreator(verCfg, this);
+ return new VersionsQueryCreator(verCfg, session, this);
}
}
Modified: trunk/src/main/org/jboss/envers/reader/VersionsReaderImplementor.java
===================================================================
--- trunk/src/main/org/jboss/envers/reader/VersionsReaderImplementor.java 2008-08-16
12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/reader/VersionsReaderImplementor.java 2008-08-16
12:44:50 UTC (rev 110)
@@ -22,9 +22,7 @@
package org.jboss.envers.reader;
import org.hibernate.engine.SessionImplementor;
-import org.hibernate.Session;
import org.jboss.envers.VersionsReader;
-import org.jboss.envers.configuration.VersionsConfiguration;
/**
* An interface exposed by a VersionsReader to library-facing classes.
@@ -32,6 +30,4 @@
*/
public interface VersionsReaderImplementor extends VersionsReader {
SessionImplementor getSessionImplementor();
-
- Session getSession();
}
Modified:
trunk/src/main/org/jboss/envers/reader/lazy/ToOneDelegateSessionImplementor.java
===================================================================
---
trunk/src/main/org/jboss/envers/reader/lazy/ToOneDelegateSessionImplementor.java 2008-08-16
12:33:03 UTC (rev 109)
+++
trunk/src/main/org/jboss/envers/reader/lazy/ToOneDelegateSessionImplementor.java 2008-08-16
12:44:50 UTC (rev 110)
@@ -28,10 +28,10 @@
* @author Adam Warski (adam at warski dot org)
*/
public class ToOneDelegateSessionImplementor extends AbstractDelegateSessionImplementor
{
- private VersionsReaderImplementor versionsReader;
- private Class<?> entityClass;
- private Object entityId;
- private Number revision;
+ private final VersionsReaderImplementor versionsReader;
+ private final Class<?> entityClass;
+ private final Object entityId;
+ private final Number revision;
public ToOneDelegateSessionImplementor(VersionsReaderImplementor versionsReader,
Class<?> entityClass, Object entityId,
Number revision) {
Modified: trunk/src/main/org/jboss/envers/revisioninfo/RevisionInfoQueryCreator.java
===================================================================
--- trunk/src/main/org/jboss/envers/revisioninfo/RevisionInfoQueryCreator.java 2008-08-16
12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/revisioninfo/RevisionInfoQueryCreator.java 2008-08-16
12:44:50 UTC (rev 110)
@@ -14,7 +14,7 @@
private final String revisionQuery;
public RevisionInfoQueryCreator(String revisionInfoEntityName, String
revisionInfoIdName,
- String revisionInfoTimestampName) {
+ String revisionInfoTimestampName) {
revisionDateQuery = new StringBuilder()
.append("select rev.").append(revisionInfoTimestampName)
.append(" from ").append(revisionInfoEntityName)