You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ke...@apache.org on 2011/09/03 10:26:42 UTC

svn commit: r1164828 - in /incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto: AbstractAutoMapper.java CombinedCollectionMapper.java

Author: kevin
Date: Sat Sep  3 08:26:41 2011
New Revision: 1164828

URL: http://svn.apache.org/viewvc?rev=1164828&view=rev
Log:
ISIS-118: Provided checks that prevent exceptions when an empty class/interface is used.

Modified:
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AbstractAutoMapper.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/CombinedCollectionMapper.java

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AbstractAutoMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AbstractAutoMapper.java?rev=1164828&r1=1164827&r2=1164828&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AbstractAutoMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AbstractAutoMapper.java Sat Sep  3 08:26:41 2011
@@ -24,6 +24,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.log4j.Logger;
+
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.exceptions.NotYetImplementedException;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -40,7 +42,6 @@ import org.apache.isis.runtimes.dflt.obj
 import org.apache.isis.runtimes.dflt.objectstores.sql.mapping.FieldMapping;
 import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.AdapterManager;
-import org.apache.log4j.Logger;
 
 public abstract class AbstractAutoMapper extends AbstractMapper {
     private static final Logger LOG = Logger.getLogger(AbstractAutoMapper.class);
@@ -56,9 +57,13 @@ public abstract class AbstractAutoMapper
         final ObjectMappingLookup objectMapperLookup) {
         specification = IsisContext.getSpecificationLoader().loadSpecification(className);
         if (specification.getProperties() == null || specification.getProperties().size() == 0) {
-            throw new SqlObjectStoreException(specification.getFullIdentifier() + " has no fields: " + specification);
+            if (specification.isAbstract() == false) {
+                throw new SqlObjectStoreException(specification.getFullIdentifier() + " has no fields: "
+                    + specification);
+            }
+        } else {
+            setUpFieldMappers(lookup, objectMapperLookup, className, parameterBase);
         }
-        setUpFieldMappers(lookup, objectMapperLookup, className, parameterBase);
     }
 
     private void setUpFieldMappers(final FieldMappingLookup lookup, final ObjectMappingLookup objectMapperLookup,

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/CombinedCollectionMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/CombinedCollectionMapper.java?rev=1164828&r1=1164827&r2=1164828&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/CombinedCollectionMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/CombinedCollectionMapper.java Sat Sep  3 08:26:41 2011
@@ -22,6 +22,8 @@ package org.apache.isis.runtimes.dflt.ob
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.log4j.Logger;
+
 import org.apache.isis.core.commons.debug.DebugBuilder;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ResolveState;
@@ -40,7 +42,6 @@ import org.apache.isis.runtimes.dflt.obj
 import org.apache.isis.runtimes.dflt.objectstores.sql.mapping.FieldMapping;
 import org.apache.isis.runtimes.dflt.objectstores.sql.mapping.ObjectReferenceMapping;
 import org.apache.isis.runtimes.dflt.runtime.persistence.PersistorUtil;
-import org.apache.log4j.Logger;
 
 public class CombinedCollectionMapper extends AbstractAutoMapper implements CollectionMapper {
     private static final Logger LOG = Logger.getLogger(CombinedCollectionMapper.class);
@@ -107,6 +108,11 @@ public class CombinedCollectionMapper ex
 
     @Override
     public void loadInternalCollection(final DatabaseConnector connector, final ObjectAdapter parent) {
+        if (collectionMappers == null) {
+            // for abstract classes and interfaces
+            return;
+        }
+
         final ObjectAdapter collection = field.get(parent);
         if (collection.getResolveState().canChangeTo(ResolveState.RESOLVING)) {
             LOG.debug("loading internal collection " + field);
@@ -157,6 +163,10 @@ public class CombinedCollectionMapper ex
 
     @Override
     public void saveInternalCollection(final DatabaseConnector connector, final ObjectAdapter parent) {
+        if (collectionMappers == null) {
+            // for abtract classes and interfaces
+            return;
+        }
         final ObjectAdapter collection = field.get(parent);
         LOG.debug("Saving internal collection " + collection);