[jboss-envers-commits] JBoss Envers SVN: r111 - in trunk/src/main/org/jboss/envers: configuration and 7 other directories.

jboss-envers-commits at lists.jboss.org jboss-envers-commits at lists.jboss.org
Sat Aug 16 13:39:06 EDT 2008


Author: adamw
Date: 2008-08-16 13:39:05 -0400 (Sat, 16 Aug 2008)
New Revision: 111

Added:
   trunk/src/main/org/jboss/envers/entities/
   trunk/src/main/org/jboss/envers/entities/RelationDescription.java
   trunk/src/main/org/jboss/envers/mapper/relation/
   trunk/src/main/org/jboss/envers/mapper/relation/OneToManyIdMapper.java
   trunk/src/main/org/jboss/envers/mapper/relation/ToOneIdMapper.java
Removed:
   trunk/src/main/org/jboss/envers/configuration/entities/
   trunk/src/main/org/jboss/envers/mapper/id/relation/
   trunk/src/main/org/jboss/envers/mapper/relation/OneToManyIdMapper.java
   trunk/src/main/org/jboss/envers/mapper/relation/ToOneIdMapper.java
Modified:
   trunk/src/main/org/jboss/envers/configuration/VersionsConfiguration.java
   trunk/src/main/org/jboss/envers/configuration/metadata/VersionsMetadataGenerator.java
   trunk/src/main/org/jboss/envers/entities/EntitiesConfigurations.java
   trunk/src/main/org/jboss/envers/entities/EntityConfiguration.java
   trunk/src/main/org/jboss/envers/entities/IdMappingData.java
   trunk/src/main/org/jboss/envers/event/VersionsEventListener.java
   trunk/src/main/org/jboss/envers/mapper/id/QueryParameterData.java
   trunk/src/main/org/jboss/envers/mapper/relation/OneToOneIdMapper.java
   trunk/src/main/org/jboss/envers/query/criteria/CriteriaTools.java
   trunk/src/main/org/jboss/envers/query/criteria/NotNullVersionsExpression.java
   trunk/src/main/org/jboss/envers/query/criteria/NullVersionsExpression.java
   trunk/src/main/org/jboss/envers/query/criteria/RelatedVersionsExpression.java
   trunk/src/main/org/jboss/envers/query/criteria/SimpleVersionsExpression.java
Log:
ENVERS-37: moving packages to more logical places

Modified: trunk/src/main/org/jboss/envers/configuration/VersionsConfiguration.java
===================================================================
--- trunk/src/main/org/jboss/envers/configuration/VersionsConfiguration.java	2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/configuration/VersionsConfiguration.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -27,7 +27,7 @@
 import org.jboss.envers.configuration.metadata.VersionsMetadataGenerator;
 import org.jboss.envers.configuration.metadata.AnnotationsMetadataReader;
 import org.jboss.envers.configuration.metadata.PersistentClassVersioningData;
-import org.jboss.envers.configuration.entities.EntitiesConfigurations;
+import org.jboss.envers.entities.EntitiesConfigurations;
 import org.jboss.envers.synchronization.VersionsSyncManager;
 import org.jboss.envers.tools.graph.GraphTopologicalSort;
 import org.jboss.envers.tools.reflection.YReflectionManager;

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:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/configuration/metadata/VersionsMetadataGenerator.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -30,14 +30,14 @@
 import org.dom4j.DocumentHelper;
 import org.dom4j.Attribute;
 import org.dom4j.tree.DefaultElement;
-import org.jboss.envers.configuration.entities.EntityConfiguration;
-import org.jboss.envers.configuration.entities.IdMappingData;
+import org.jboss.envers.entities.EntityConfiguration;
+import org.jboss.envers.entities.IdMappingData;
 import org.jboss.envers.configuration.VersionsConfiguration;
 import org.jboss.envers.mapper.*;
 import org.jboss.envers.mapper.id.*;
-import org.jboss.envers.mapper.id.relation.ToOneIdMapper;
-import org.jboss.envers.mapper.id.relation.OneToOneIdMapper;
-import org.jboss.envers.mapper.id.relation.OneToManyIdMapper;
+import org.jboss.envers.mapper.relation.ToOneIdMapper;
+import org.jboss.envers.mapper.relation.OneToOneIdMapper;
+import org.jboss.envers.mapper.relation.OneToManyIdMapper;
 import org.jboss.envers.tools.StringTools;
 import org.jboss.envers.tools.Tools;
 import org.jboss.envers.tools.HibernateVersion;

Copied: trunk/src/main/org/jboss/envers/entities (from rev 109, trunk/src/main/org/jboss/envers/configuration/entities)

Modified: trunk/src/main/org/jboss/envers/entities/EntitiesConfigurations.java
===================================================================
--- trunk/src/main/org/jboss/envers/configuration/entities/EntitiesConfigurations.java	2008-08-16 12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/entities/EntitiesConfigurations.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -19,11 +19,10 @@
  *
  * Red Hat Author(s): Adam Warski
  */
-package org.jboss.envers.configuration.entities;
+package org.jboss.envers.entities;
 
 import org.jboss.envers.mapper.id.IdMapper;
 import org.jboss.envers.mapper.ExtendedPropertyMapper;
-import org.jboss.envers.configuration.RelationDescription;
 
 import java.util.Map;
 import java.util.HashMap;

Modified: trunk/src/main/org/jboss/envers/entities/EntityConfiguration.java
===================================================================
--- trunk/src/main/org/jboss/envers/configuration/entities/EntityConfiguration.java	2008-08-16 12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/entities/EntityConfiguration.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -19,9 +19,9 @@
  *
  * Red Hat Author(s): Adam Warski
  */
-package org.jboss.envers.configuration.entities;
+package org.jboss.envers.entities;
 
-import org.jboss.envers.configuration.RelationDescription;
+import org.jboss.envers.entities.RelationDescription;
 import org.jboss.envers.mapper.ExtendedPropertyMapper;
 import org.jboss.envers.mapper.id.IdMapper;
 

Modified: trunk/src/main/org/jboss/envers/entities/IdMappingData.java
===================================================================
--- trunk/src/main/org/jboss/envers/configuration/entities/IdMappingData.java	2008-08-16 12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/entities/IdMappingData.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -19,7 +19,7 @@
  *
  * Red Hat Author(s): Adam Warski
  */
-package org.jboss.envers.configuration.entities;
+package org.jboss.envers.entities;
 
 import org.jboss.envers.mapper.id.IdMapper;
 import org.dom4j.Element;

Copied: trunk/src/main/org/jboss/envers/entities/RelationDescription.java (from rev 109, trunk/src/main/org/jboss/envers/configuration/RelationDescription.java)
===================================================================
--- trunk/src/main/org/jboss/envers/entities/RelationDescription.java	                        (rev 0)
+++ trunk/src/main/org/jboss/envers/entities/RelationDescription.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -0,0 +1,53 @@
+/*
+ * 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.entities;
+
+import org.jboss.envers.mapper.id.IdMapper;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+*/
+public class RelationDescription {
+    public final String fromPropertyName;
+    public final RelationType relationType;
+    public final String toEntityName;
+    public final String mappedByPropertyName;
+    public final IdMapper idMapper;
+    public boolean bidirectional;
+
+    public RelationDescription(String fromPropertyName, RelationType relationType, String toEntityName,
+                               String mappedByPropertyName, IdMapper idMapper) {
+        this.fromPropertyName = fromPropertyName;
+        this.relationType = relationType;
+        this.toEntityName = toEntityName;
+        this.mappedByPropertyName = mappedByPropertyName;
+        this.idMapper = idMapper;
+
+        this.bidirectional = false;
+    }
+
+    public static enum RelationType {
+        TO_ONE,
+        ONE_TO_ONE,
+        ONE_TO_MANY
+    }
+}

Modified: trunk/src/main/org/jboss/envers/event/VersionsEventListener.java
===================================================================
--- trunk/src/main/org/jboss/envers/event/VersionsEventListener.java	2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/event/VersionsEventListener.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -25,7 +25,7 @@
 import org.hibernate.cfg.Configuration;
 import org.hibernate.persister.entity.EntityPersister;
 import org.jboss.envers.configuration.VersionsConfiguration;
-import org.jboss.envers.configuration.RelationDescription;
+import org.jboss.envers.entities.RelationDescription;
 import org.jboss.envers.synchronization.VersionsSync;
 import org.jboss.envers.synchronization.work.AddWorkUnit;
 import org.jboss.envers.synchronization.work.ModWorkUnit;

Modified: trunk/src/main/org/jboss/envers/mapper/id/QueryParameterData.java
===================================================================
--- trunk/src/main/org/jboss/envers/mapper/id/QueryParameterData.java	2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/mapper/id/QueryParameterData.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -21,8 +21,6 @@
  */
 package org.jboss.envers.mapper.id;
 
-import org.hibernate.Query;
-
 /**
  * @author Adam Warski (adam at warski dot org)
  */
@@ -35,11 +33,6 @@
         this.value = value;
     }
 
-    public void appendProperty(StringBuilder queryStr, String prefix) {
-        queryStr.append(prefix).append(".");
-        queryStr.append(flatEntityPropertyName);
-    }
-
     public String getProperty(String prefix) {
         if (prefix != null) {
             return prefix + "." + flatEntityPropertyName;
@@ -51,13 +44,4 @@
     public Object getValue() {
         return value;
     }
-
-    public void appendPropertyWithParameter(StringBuilder queryStr, String prefix) {
-        appendProperty(queryStr, prefix);
-        queryStr.append(" = :").append(flatEntityPropertyName);
-    }
-
-    public void setQueryParameter(Query query) {
-        query.setParameter(flatEntityPropertyName, value);
-    }
 }

Copied: trunk/src/main/org/jboss/envers/mapper/relation (from rev 109, trunk/src/main/org/jboss/envers/mapper/id/relation)

Deleted: trunk/src/main/org/jboss/envers/mapper/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/relation/OneToManyIdMapper.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -1,80 +0,0 @@
-/*
- * 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.mapper.id.relation;
-
-import org.jboss.envers.mapper.PropertyMapper;
-import org.jboss.envers.reader.VersionsReaderImplementor;
-import org.jboss.envers.reader.lazy.OneToManyInitializor;
-import org.jboss.envers.reader.lazy.proxy.ListProxy;
-import org.jboss.envers.reader.lazy.proxy.SetProxy;
-import org.jboss.envers.exception.VersionsException;
-import org.jboss.envers.tools.reflection.ReflectionTools;
-import org.hibernate.property.Setter;
-import org.hibernate.property.Getter;
-
-import java.util.*;
-
-/**
- * @author Adam Warski (adam at warski dot org)
- */
-public class OneToManyIdMapper implements PropertyMapper {
-    private String owningReferencePropertyName;
-    private String owningEntityName;
-    private String propertyName;
-
-    public OneToManyIdMapper(String owningReferencePropertyName, String owningEntityName, String propertyName) {
-        this.owningReferencePropertyName = owningReferencePropertyName;
-        this.owningEntityName = owningEntityName;
-        this.propertyName = propertyName;
-    }
-
-    public boolean mapToMapFromEntity(Map<String, Object> data, Object newObj, Object oldObj) {
-        return false;
-    }
-
-    @SuppressWarnings({"unchecked"})
-    public void mapToEntityFromMap(Object obj, Map data, Object primaryKey, VersionsReaderImplementor versionsReader, Number revision) {
-        if (obj == null) {
-            return;
-        }
-
-        Class<?> entityClass = ReflectionTools.loadClass(owningEntityName);
-
-        Getter getter = ReflectionTools.getGetter(obj.getClass(), propertyName);
-        Class collectionClass = getter.getReturnType();
-
-        // todo: investigate generics
-        Object value;
-        if (List.class.isAssignableFrom(collectionClass)) {
-            value = new ListProxy(new OneToManyInitializor<ArrayList>(versionsReader, entityClass,
-                        owningReferencePropertyName, primaryKey, revision, ArrayList.class));
-        } else if (Set.class.isAssignableFrom(collectionClass) || Collection.class.isAssignableFrom(collectionClass)) {
-            value = new SetProxy(new OneToManyInitializor<HashSet>(versionsReader, entityClass,
-                        owningReferencePropertyName, primaryKey, revision, HashSet.class));
-        } else {
-            throw new VersionsException("Unsupported versioned collection type: " + collectionClass.getName());
-        }
-
-        Setter setter = ReflectionTools.getSetter(obj.getClass(), propertyName);
-        setter.set(obj, value, null);
-    }
-}
\ No newline at end of file

Copied: trunk/src/main/org/jboss/envers/mapper/relation/OneToManyIdMapper.java (from rev 110, trunk/src/main/org/jboss/envers/mapper/id/relation/OneToManyIdMapper.java)
===================================================================
--- trunk/src/main/org/jboss/envers/mapper/relation/OneToManyIdMapper.java	                        (rev 0)
+++ trunk/src/main/org/jboss/envers/mapper/relation/OneToManyIdMapper.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -0,0 +1,80 @@
+/*
+ * 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.mapper.relation;
+
+import org.jboss.envers.mapper.PropertyMapper;
+import org.jboss.envers.reader.VersionsReaderImplementor;
+import org.jboss.envers.reader.lazy.OneToManyInitializor;
+import org.jboss.envers.reader.lazy.proxy.ListProxy;
+import org.jboss.envers.reader.lazy.proxy.SetProxy;
+import org.jboss.envers.exception.VersionsException;
+import org.jboss.envers.tools.reflection.ReflectionTools;
+import org.hibernate.property.Setter;
+import org.hibernate.property.Getter;
+
+import java.util.*;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+public class OneToManyIdMapper implements PropertyMapper {
+    private final String owningReferencePropertyName;
+    private final String owningEntityName;
+    private final String propertyName;
+
+    public OneToManyIdMapper(String owningReferencePropertyName, String owningEntityName, String propertyName) {
+        this.owningReferencePropertyName = owningReferencePropertyName;
+        this.owningEntityName = owningEntityName;
+        this.propertyName = propertyName;
+    }
+
+    public boolean mapToMapFromEntity(Map<String, Object> data, Object newObj, Object oldObj) {
+        return false;
+    }
+
+    @SuppressWarnings({"unchecked"})
+    public void mapToEntityFromMap(Object obj, Map data, Object primaryKey, VersionsReaderImplementor versionsReader, Number revision) {
+        if (obj == null) {
+            return;
+        }
+
+        Class<?> entityClass = ReflectionTools.loadClass(owningEntityName);
+
+        Getter getter = ReflectionTools.getGetter(obj.getClass(), propertyName);
+        Class collectionClass = getter.getReturnType();
+
+        // todo: investigate generics
+        Object value;
+        if (List.class.isAssignableFrom(collectionClass)) {
+            value = new ListProxy(new OneToManyInitializor<ArrayList>(versionsReader, entityClass,
+                        owningReferencePropertyName, primaryKey, revision, ArrayList.class));
+        } else if (Set.class.isAssignableFrom(collectionClass) || Collection.class.isAssignableFrom(collectionClass)) {
+            value = new SetProxy(new OneToManyInitializor<HashSet>(versionsReader, entityClass,
+                        owningReferencePropertyName, primaryKey, revision, HashSet.class));
+        } else {
+            throw new VersionsException("Unsupported versioned collection type: " + collectionClass.getName());
+        }
+
+        Setter setter = ReflectionTools.getSetter(obj.getClass(), propertyName);
+        setter.set(obj, value, null);
+    }
+}
\ No newline at end of file

Modified: trunk/src/main/org/jboss/envers/mapper/relation/OneToOneIdMapper.java
===================================================================
--- trunk/src/main/org/jboss/envers/mapper/id/relation/OneToOneIdMapper.java	2008-08-16 12:33:03 UTC (rev 109)
+++ trunk/src/main/org/jboss/envers/mapper/relation/OneToOneIdMapper.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -19,7 +19,7 @@
  *
  * Red Hat Author(s): Adam Warski
  */
-package org.jboss.envers.mapper.id.relation;
+package org.jboss.envers.mapper.relation;
 
 import org.jboss.envers.mapper.PropertyMapper;
 import org.jboss.envers.reader.VersionsReaderImplementor;

Deleted: trunk/src/main/org/jboss/envers/mapper/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/relation/ToOneIdMapper.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -1,82 +0,0 @@
-/*
- * 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.mapper.id.relation;
-
-import org.jboss.envers.mapper.PropertyMapper;
-import org.jboss.envers.mapper.id.IdMapper;
-import org.jboss.envers.tools.Tools;
-import org.jboss.envers.tools.reflection.ReflectionTools;
-import org.jboss.envers.reader.VersionsReaderImplementor;
-import org.jboss.envers.reader.lazy.ToOneDelegateSessionImplementor;
-import org.hibernate.property.Setter;
-
-import java.util.Map;
-import java.util.HashMap;
-
-/**
- * @author Adam Warski (adam at warski dot org)
- */
-public class ToOneIdMapper implements PropertyMapper {
-    private IdMapper delegate;
-    private String propertyName;
-    private String referencedEntityName;
-
-    public ToOneIdMapper(IdMapper delegate, String propertyName, String referencedEntityName) {
-        this.delegate = delegate;
-        this.propertyName = propertyName;
-        this.referencedEntityName = referencedEntityName;
-    }
-
-    public boolean mapToMapFromEntity(Map<String, Object> data, Object newObj, Object oldObj) {
-        HashMap<String, Object> newData = new HashMap<String, Object>();
-        data.put(propertyName, newData);
-
-        delegate.mapToMapFromEntity(newData, newObj);
-
-        return !Tools.objectsEqual(newObj, oldObj);
-    }
-
-    public void mapToEntityFromMap(Object obj, Map data, Object primaryKey,
-                                   VersionsReaderImplementor versionsReader, Number revision) {
-        if (obj == null) {
-            return;
-        }
-
-        Object entityId = delegate.mapToIdFromMap((Map) data.get(propertyName));
-        doMap(obj, versionsReader, revision, entityId);
-    }
-
-    private void doMap(Object obj, VersionsReaderImplementor versionsReader, Number revision, Object entityId) {
-        Object value;
-        if (entityId == null) {
-            value = null;
-        } else {
-            Class<?> entityClass = ReflectionTools.loadClass(referencedEntityName);
-
-            value = versionsReader.getSessionImplementor().getFactory().getEntityPersister(referencedEntityName).
-                    createProxy(null, new ToOneDelegateSessionImplementor(versionsReader, entityClass, entityId, revision));
-        }
-
-        Setter setter = ReflectionTools.getSetter(obj.getClass(), propertyName);
-        setter.set(obj, value, null);
-    }
-}

Copied: trunk/src/main/org/jboss/envers/mapper/relation/ToOneIdMapper.java (from rev 110, trunk/src/main/org/jboss/envers/mapper/id/relation/ToOneIdMapper.java)
===================================================================
--- trunk/src/main/org/jboss/envers/mapper/relation/ToOneIdMapper.java	                        (rev 0)
+++ trunk/src/main/org/jboss/envers/mapper/relation/ToOneIdMapper.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -0,0 +1,82 @@
+/*
+ * 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.mapper.relation;
+
+import org.jboss.envers.mapper.PropertyMapper;
+import org.jboss.envers.mapper.id.IdMapper;
+import org.jboss.envers.tools.Tools;
+import org.jboss.envers.tools.reflection.ReflectionTools;
+import org.jboss.envers.reader.VersionsReaderImplementor;
+import org.jboss.envers.reader.lazy.ToOneDelegateSessionImplementor;
+import org.hibernate.property.Setter;
+
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+public class ToOneIdMapper implements PropertyMapper {
+    private final IdMapper delegate;
+    private final String propertyName;
+    private final String referencedEntityName;
+
+    public ToOneIdMapper(IdMapper delegate, String propertyName, String referencedEntityName) {
+        this.delegate = delegate;
+        this.propertyName = propertyName;
+        this.referencedEntityName = referencedEntityName;
+    }
+
+    public boolean mapToMapFromEntity(Map<String, Object> data, Object newObj, Object oldObj) {
+        HashMap<String, Object> newData = new HashMap<String, Object>();
+        data.put(propertyName, newData);
+
+        delegate.mapToMapFromEntity(newData, newObj);
+
+        return !Tools.objectsEqual(newObj, oldObj);
+    }
+
+    public void mapToEntityFromMap(Object obj, Map data, Object primaryKey,
+                                   VersionsReaderImplementor versionsReader, Number revision) {
+        if (obj == null) {
+            return;
+        }
+
+        Object entityId = delegate.mapToIdFromMap((Map) data.get(propertyName));
+        doMap(obj, versionsReader, revision, entityId);
+    }
+
+    private void doMap(Object obj, VersionsReaderImplementor versionsReader, Number revision, Object entityId) {
+        Object value;
+        if (entityId == null) {
+            value = null;
+        } else {
+            Class<?> entityClass = ReflectionTools.loadClass(referencedEntityName);
+
+            value = versionsReader.getSessionImplementor().getFactory().getEntityPersister(referencedEntityName).
+                    createProxy(null, new ToOneDelegateSessionImplementor(versionsReader, entityClass, entityId, revision));
+        }
+
+        Setter setter = ReflectionTools.getSetter(obj.getClass(), propertyName);
+        setter.set(obj, value, null);
+    }
+}

Modified: trunk/src/main/org/jboss/envers/query/criteria/CriteriaTools.java
===================================================================
--- trunk/src/main/org/jboss/envers/query/criteria/CriteriaTools.java	2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/query/criteria/CriteriaTools.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -22,7 +22,7 @@
 package org.jboss.envers.query.criteria;
 
 import org.jboss.envers.exception.VersionsException;
-import org.jboss.envers.configuration.RelationDescription;
+import org.jboss.envers.entities.RelationDescription;
 import org.jboss.envers.configuration.VersionsConfiguration;
 
 /**

Modified: trunk/src/main/org/jboss/envers/query/criteria/NotNullVersionsExpression.java
===================================================================
--- trunk/src/main/org/jboss/envers/query/criteria/NotNullVersionsExpression.java	2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/query/criteria/NotNullVersionsExpression.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -24,7 +24,7 @@
 import org.hibernate.criterion.Criterion;
 import org.hibernate.criterion.Restrictions;
 import org.jboss.envers.exception.VersionsException;
-import org.jboss.envers.configuration.RelationDescription;
+import org.jboss.envers.entities.RelationDescription;
 import org.jboss.envers.configuration.VersionsConfiguration;
 
 /**

Modified: trunk/src/main/org/jboss/envers/query/criteria/NullVersionsExpression.java
===================================================================
--- trunk/src/main/org/jboss/envers/query/criteria/NullVersionsExpression.java	2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/query/criteria/NullVersionsExpression.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -24,7 +24,7 @@
 import org.hibernate.criterion.Criterion;
 import org.hibernate.criterion.Restrictions;
 import org.jboss.envers.exception.VersionsException;
-import org.jboss.envers.configuration.RelationDescription;
+import org.jboss.envers.entities.RelationDescription;
 import org.jboss.envers.configuration.VersionsConfiguration;
 
 /**

Modified: trunk/src/main/org/jboss/envers/query/criteria/RelatedVersionsExpression.java
===================================================================
--- trunk/src/main/org/jboss/envers/query/criteria/RelatedVersionsExpression.java	2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/query/criteria/RelatedVersionsExpression.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -23,7 +23,7 @@
 
 import org.hibernate.criterion.Criterion;
 import org.jboss.envers.exception.VersionsException;
-import org.jboss.envers.configuration.RelationDescription;
+import org.jboss.envers.entities.RelationDescription;
 import org.jboss.envers.configuration.VersionsConfiguration;
 
 /**

Modified: trunk/src/main/org/jboss/envers/query/criteria/SimpleVersionsExpression.java
===================================================================
--- trunk/src/main/org/jboss/envers/query/criteria/SimpleVersionsExpression.java	2008-08-16 12:44:50 UTC (rev 110)
+++ trunk/src/main/org/jboss/envers/query/criteria/SimpleVersionsExpression.java	2008-08-16 17:39:05 UTC (rev 111)
@@ -23,7 +23,7 @@
 
 import org.hibernate.criterion.Criterion;
 import org.jboss.envers.exception.VersionsException;
-import org.jboss.envers.configuration.RelationDescription;
+import org.jboss.envers.entities.RelationDescription;
 import org.jboss.envers.configuration.VersionsConfiguration;
 
 /**




More information about the jboss-envers-commits mailing list