Author: adamw
Date: 2008-08-15 10:00:41 -0400 (Fri, 15 Aug 2008)
New Revision: 106
Modified:
trunk/src/main/org/jboss/envers/mapper/id/relation/OneToManyIdMapper.java
trunk/src/main/org/jboss/envers/mapper/id/relation/OneToOneIdMapper.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/OneToManyInitializor.java
Log:
ENVERS-37: componentizing configuration - moving some methods out of versions reader
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-15
13:27:21 UTC (rev 105)
+++ trunk/src/main/org/jboss/envers/mapper/id/relation/OneToManyIdMapper.java 2008-08-15
14:00:41 UTC (rev 106)
@@ -51,12 +51,8 @@
return false;
}
- public void mapToEntityFromMap(Object obj, Map data, Object primaryKey,
VersionsReaderImplementor versionsReader, Number revision) {
- doMap(obj, primaryKey, versionsReader, revision);
- }
-
@SuppressWarnings({"unchecked"})
- private void doMap(Object obj, Object primaryKey, VersionsReaderImplementor
versionsReader, Number revision) {
+ public void mapToEntityFromMap(Object obj, Map data, Object primaryKey,
VersionsReaderImplementor versionsReader, Number revision) {
if (obj == null) {
return;
}
Modified: trunk/src/main/org/jboss/envers/mapper/id/relation/OneToOneIdMapper.java
===================================================================
--- trunk/src/main/org/jboss/envers/mapper/id/relation/OneToOneIdMapper.java 2008-08-15
13:27:21 UTC (rev 105)
+++ trunk/src/main/org/jboss/envers/mapper/id/relation/OneToOneIdMapper.java 2008-08-15
14:00:41 UTC (rev 106)
@@ -24,8 +24,12 @@
import org.jboss.envers.mapper.PropertyMapper;
import org.jboss.envers.reader.VersionsReaderImplementor;
import org.jboss.envers.tools.reflection.ReflectionTools;
+import org.jboss.envers.query.VersionsRestrictions;
+import org.jboss.envers.exception.VersionsException;
import org.hibernate.property.Setter;
+import org.hibernate.NonUniqueResultException;
+import javax.persistence.NoResultException;
import java.util.Map;
/**
@@ -47,19 +51,24 @@
}
public void mapToEntityFromMap(Object obj, Map data, Object primaryKey,
VersionsReaderImplementor versionsReader, Number revision) {
- doMap(obj, primaryKey, versionsReader, revision);
- }
-
- private void doMap(Object obj, Object primaryKey, VersionsReaderImplementor
versionsReader, Number revision) {
if (obj == null) {
return;
}
Class<?> entityClass = ReflectionTools.loadClass(owningEntityName);
- Object value = versionsReader.findOneReferencing(entityClass, owningEntityName,
owningReferencePropertyName,
- primaryKey, revision);
+ Object value;
+ try {
+ value = versionsReader.createQuery().forEntitiesAtRevision(entityClass,
revision)
+ .add(VersionsRestrictions.relatedIdEq(owningReferencePropertyName,
primaryKey)).getSingleResult();
+ } catch (NoResultException e) {
+ value = null;
+ } catch (NonUniqueResultException e) {
+ throw new VersionsException("Many versions results for one-to-one
relationship: (" + owningEntityName +
+ ", " + owningReferencePropertyName + ")");
+ }
+
Setter setter = ReflectionTools.getSetter(obj.getClass(), propertyName);
setter.set(obj, value, null);
}
Modified: trunk/src/main/org/jboss/envers/reader/VersionsReaderImpl.java
===================================================================
--- trunk/src/main/org/jboss/envers/reader/VersionsReaderImpl.java 2008-08-15 13:27:21 UTC
(rev 105)
+++ trunk/src/main/org/jboss/envers/reader/VersionsReaderImpl.java 2008-08-15 14:00:41 UTC
(rev 106)
@@ -97,42 +97,7 @@
}
}
- public Object findOneReferencing(Class<?> cls, String owningEntityName, String
owningReferencePropertyName,
- Object ownedEntityId, Number revision) {
- try {
- return createQuery().forEntitiesAtRevision(cls, revision)
- .add(VersionsRestrictions.relatedIdEq(owningReferencePropertyName,
ownedEntityId)).getSingleResult();
- } catch (NoResultException e) {
- return null;
- } catch (NonUniqueResultException e) {
- throw new VersionsException("Many versions results for one-to-one
relationship: (" + owningEntityName +
- ", " + owningReferencePropertyName + ")");
- }
- }
-
@SuppressWarnings({"unchecked"})
- public Object findManyReferencing(Class<?> cls, String
owningReferencePropertyName, Object ownedEntityId,
- Number revision, Class<? extends Collection>
collectionClass) {
- List queryResult = createQuery().forEntitiesAtRevision(cls, revision)
- .add(VersionsRestrictions.relatedIdEq(owningReferencePropertyName,
ownedEntityId)).getResultList();
-
- if (collectionClass.isAssignableFrom(queryResult.getClass())) {
- return queryResult;
- } else {
- Collection result;
- try {
- result = collectionClass.newInstance();
- } catch (Exception e) {
- throw new VersionsException(e);
- }
-
- result.addAll(queryResult);
-
- return result;
- }
- }
-
- @SuppressWarnings({"unchecked"})
public List<Number> getRevisions(Class<?> cls, Object primaryKey)
throws IllegalArgumentException, NotVersionedException, IllegalStateException
{
// todo: if a class is not versioned from the beginning, there's a missing
ADD rev - what then?
Modified: trunk/src/main/org/jboss/envers/reader/VersionsReaderImplementor.java
===================================================================
--- trunk/src/main/org/jboss/envers/reader/VersionsReaderImplementor.java 2008-08-15
13:27:21 UTC (rev 105)
+++ trunk/src/main/org/jboss/envers/reader/VersionsReaderImplementor.java 2008-08-15
14:00:41 UTC (rev 106)
@@ -26,8 +26,6 @@
import org.jboss.envers.VersionsReader;
import org.jboss.envers.configuration.VersionsConfiguration;
-import java.util.Collection;
-
/**
* An interface exposed by a VersionsReader to library-facing classes.
* @author Adam Warski (adam at warski dot org)
@@ -37,11 +35,5 @@
Session getSession();
- Object findOneReferencing(Class<?> cls, String owningEntityName, String
owningReferencePropertyName,
- Object ownedEntityId, Number revision);
-
- Object findManyReferencing(Class<?> cls, String owningReferencePropertyName,
Object ownedEntityId, Number revision,
- Class<? extends Collection> collectionClass);
-
VersionsConfiguration getVerCfg();
}
Modified: trunk/src/main/org/jboss/envers/reader/lazy/OneToManyInitializor.java
===================================================================
--- trunk/src/main/org/jboss/envers/reader/lazy/OneToManyInitializor.java 2008-08-15
13:27:21 UTC (rev 105)
+++ trunk/src/main/org/jboss/envers/reader/lazy/OneToManyInitializor.java 2008-08-15
14:00:41 UTC (rev 106)
@@ -23,8 +23,11 @@
import org.jboss.envers.reader.VersionsReaderImplementor;
import org.jboss.envers.reader.lazy.proxy.Initializor;
+import org.jboss.envers.query.VersionsRestrictions;
+import org.jboss.envers.exception.VersionsException;
import java.util.Collection;
+import java.util.List;
/**
* @author Adam Warski (adam at warski dot org)
@@ -50,7 +53,22 @@
@SuppressWarnings({"unchecked"})
public T initialize() {
- return (T) versionsReader.findManyReferencing(entityClass,
owningReferencePropertyName,
- primaryKey, revision, collectionClass);
+ List queryResult =
versionsReader.createQuery().forEntitiesAtRevision(entityClass, revision)
+ .add(VersionsRestrictions.relatedIdEq(owningReferencePropertyName,
primaryKey)).getResultList();
+
+ if (collectionClass.isAssignableFrom(queryResult.getClass())) {
+ return (T) queryResult;
+ } else {
+ Collection result;
+ try {
+ result = collectionClass.newInstance();
+ } catch (Exception e) {
+ throw new VersionsException(e);
+ }
+
+ result.addAll(queryResult);
+
+ return (T) result;
+ }
}
}