You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by rm...@apache.org on 2011/04/28 12:42:06 UTC

svn commit: r1097407 - in /incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel: facets/object/callbacks/CallbackUtils.java services/container/DomainObjectContainerDefault.java

Author: rmatthews
Date: Thu Apr 28 10:42:06 2011
New Revision: 1097407

URL: http://svn.apache.org/viewvc?rev=1097407&view=rev
Log:
Added exceptions to make domain model errors more obvious.

Modified:
    incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackUtils.java
    incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java

Modified: incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackUtils.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackUtils.java?rev=1097407&r1=1097406&r2=1097407&view=diff
==============================================================================
--- incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackUtils.java (original)
+++ incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackUtils.java Thu Apr 28 10:42:06 2011
@@ -17,12 +17,13 @@
  *  under the License.
  */
 
-package org.apache.isis.core.metamodel.facets.object.callbacks;
-
+package org.apache.isis.core.metamodel.facets.object.callbacks;
+
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
-
-public final class CallbackUtils {
+import org.apache.isis.core.metamodel.spec.DomainModelException;
+
+public final class CallbackUtils {
 
     private CallbackUtils() {
     }
@@ -30,7 +31,11 @@ public final class CallbackUtils {
     public static void callCallback(final ObjectAdapter object, final Class<? extends Facet> cls) {
         final CallbackFacet facet = (CallbackFacet) object.getSpecification().getFacet(cls);
         if (facet != null) {
-            facet.invoke(object);
+            try {
+                facet.invoke(object);
+            } catch (RuntimeException e) {
+                throw new DomainModelException("Callback failed.  Calling " + facet + " on " + object, e);
+            }
         }
     }
 

Modified: incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java?rev=1097407&r1=1097406&r2=1097407&view=diff
==============================================================================
--- incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java (original)
+++ incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java Thu Apr 28 10:42:06 2011
@@ -46,6 +46,7 @@ import org.apache.isis.core.metamodel.ad
 import org.apache.isis.core.metamodel.adapter.QuerySubmitterAware;
 import org.apache.isis.core.metamodel.adapter.map.AdapterMap;
 import org.apache.isis.core.metamodel.adapter.map.AdapterMapAware;
+import org.apache.isis.core.metamodel.adapter.oid.AggregatedOid;
 import org.apache.isis.core.metamodel.adapter.util.AdapterUtils;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
 import org.apache.isis.core.metamodel.services.container.query.QueryFindByPattern;
@@ -55,8 +56,7 @@ import org.apache.isis.core.metamodel.sp
 import org.apache.isis.core.metamodel.spec.SpecificationLookupAware;
 
 public class DomainObjectContainerDefault implements DomainObjectContainer, QuerySubmitterAware, ObjectDirtierAware,
-    DomainObjectServicesAware, ObjectPersistorAware, SpecificationLookupAware, AuthenticationSessionProviderAware,
-    AdapterMapAware {
+    DomainObjectServicesAware, ObjectPersistorAware, SpecificationLookupAware, AuthenticationSessionProviderAware, AdapterMapAware {
 
     private ObjectDirtier objectDirtier;
     private ObjectPersistor objectPersistor;
@@ -89,20 +89,21 @@ public class DomainObjectContainerDefaul
             return (T) adapter.getObject();
         }
     }
-
+    
     @Override
     @SuppressWarnings("unchecked")
-    public <T> T newAggregatedInstance(final Object parent, final Class<T> ofClass) {
+    public <T> T newAggregatedInstance(Object parent, Class<T> ofClass) {
         final ObjectSpecification spec = getSpecificationLookup().loadSpecification(ofClass);
         // TODO check aggregation is supported
         if (!spec.isAggregated()) {
-            throw new IsisException(
-                "Cannot instantiate an object unless it is marked as Aggregated using the newAggregatedInstance method"); // TODO
-                                                                                                                          // proper
-                                                                                                                          // type
+            throw new IsisException("Cannot instantiate an object unless it is marked as Aggregated using the newAggregatedInstance method: " + ofClass); // TODO proper type
         }
         final ObjectAdapter adapter = doCreateAggregatedInstance(spec, parent);
-        return (T) adapter.getObject();
+        if (adapter.getOid() instanceof AggregatedOid) {
+            return (T) adapter.getObject();
+        } else {
+            throw new IsisException("Object instatiated but was not given a AggregatedOid: " + ofClass); // TODO proper type            
+        }
     }
 
     /**
@@ -110,7 +111,7 @@ public class DomainObjectContainerDefaul
      */
     @Override
     public <T> T newPersistentInstance(final Class<T> ofClass) {
-        final T newInstance = newTransientInstance(ofClass);
+        T newInstance = newTransientInstance(ofClass);
         persist(newInstance);
         return newInstance;
     }
@@ -133,9 +134,9 @@ public class DomainObjectContainerDefaul
     protected ObjectAdapter doCreateTransientInstance(final ObjectSpecification spec) {
         return getDomainObjectServices().createTransientInstance(spec);
     }
-
-    private ObjectAdapter doCreateAggregatedInstance(final ObjectSpecification spec, final Object parent) {
-        final ObjectAdapter parentAdapter = getAdapterMap().getAdapterFor(parent);
+    
+    private ObjectAdapter doCreateAggregatedInstance(ObjectSpecification spec, Object parent) {
+        ObjectAdapter parentAdapter = getAdapterMap().getAdapterFor(parent);
         return getDomainObjectServices().createAggregatedInstance(spec, parentAdapter);
     }
 
@@ -205,7 +206,7 @@ public class DomainObjectContainerDefaul
     @Override
     public String validate(final Object domainObject) {
         final ObjectAdapter adapter = getAdapterMap().adapterFor(domainObject);
-        final InteractionResult validityResult = adapter.getSpecification().isValidResult(adapter);
+        InteractionResult validityResult = adapter.getSpecification().isValidResult(adapter);
         return validityResult.getReason();
     }
 
@@ -255,10 +256,10 @@ public class DomainObjectContainerDefaul
         return user;
     }
 
-    private List<RoleMemento> asRoleMementos(final List<String> roles) {
-        final List<RoleMemento> mementos = new ArrayList<RoleMemento>();
+    private List<RoleMemento> asRoleMementos(List<String> roles) {
+        List<RoleMemento> mementos = new ArrayList<RoleMemento>();
         if (roles != null) {
-            for (final String role : roles) {
+            for (String role : roles) {
                 mementos.add(new RoleMemento(role));
             }
         }
@@ -270,13 +271,13 @@ public class DomainObjectContainerDefaul
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public String getProperty(final String name) {
+    public String getProperty(String name) {
         return getDomainObjectServices().getProperty(name);
     }
 
     @Override
-    public String getProperty(final String name, final String defaultValue) {
-        final String value = getProperty(name);
+    public String getProperty(String name, String defaultValue) {
+        String value = getProperty(name);
         return value == null ? defaultValue : value;
     }
 
@@ -317,7 +318,7 @@ public class DomainObjectContainerDefaul
     public <T> List<T> allMatches(final Class<T> cls, final Filter<T> filter) {
         final List<T> allInstances = allInstances(cls);
         final List<T> filtered = new ArrayList<T>();
-        for (final T instance : allInstances) {
+        for (T instance : allInstances) {
             if (filter.accept(instance)) {
                 filtered.add(instance);
             }
@@ -338,7 +339,7 @@ public class DomainObjectContainerDefaul
 
     @Override
     public <T> List<T> allMatches(final Query<T> query) {
-        final List<ObjectAdapter> allMatching = getQuerySubmitter().allMatchingQuery(query);
+        List<ObjectAdapter> allMatching = getQuerySubmitter().allMatchingQuery(query);
         return AdapterUtils.unwrap(allMatching);
     }
 
@@ -349,7 +350,7 @@ public class DomainObjectContainerDefaul
     @Override
     public <T> T firstMatch(final Class<T> cls, final Filter<T> filter) {
         final List<T> allInstances = allInstances(cls);
-        for (final T instance : allInstances) {
+        for (T instance : allInstances) {
             if (filter.accept(instance)) {
                 return instance;
             }
@@ -372,7 +373,7 @@ public class DomainObjectContainerDefaul
     @Override
     @SuppressWarnings("unchecked")
     public <T> T firstMatch(final Query<T> query) {
-        final ObjectAdapter firstMatching = getQuerySubmitter().firstMatchingQuery(query);
+        ObjectAdapter firstMatching = getQuerySubmitter().firstMatchingQuery(query);
         return (T) AdapterUtils.unwrap(firstMatching);
     }
 
@@ -429,7 +430,7 @@ public class DomainObjectContainerDefaul
     }
 
     @Override
-    public void setQuerySubmitter(final QuerySubmitter querySubmitter) {
+    public void setQuerySubmitter(QuerySubmitter querySubmitter) {
         this.querySubmitter = querySubmitter;
     }
 
@@ -438,7 +439,7 @@ public class DomainObjectContainerDefaul
     }
 
     @Override
-    public void setDomainObjectServices(final DomainObjectServices domainObjectServices) {
+    public void setDomainObjectServices(DomainObjectServices domainObjectServices) {
         this.domainObjectServices = domainObjectServices;
     }
 
@@ -447,7 +448,7 @@ public class DomainObjectContainerDefaul
     }
 
     @Override
-    public void setSpecificationLookup(final SpecificationLookup specificationLookup) {
+    public void setSpecificationLookup(SpecificationLookup specificationLookup) {
         this.specificationLookup = specificationLookup;
     }
 
@@ -456,7 +457,7 @@ public class DomainObjectContainerDefaul
     }
 
     @Override
-    public void setAuthenticationSessionProvider(final AuthenticationSessionProvider authenticationSessionProvider) {
+    public void setAuthenticationSessionProvider(AuthenticationSessionProvider authenticationSessionProvider) {
         this.authenticationSessionProvider = authenticationSessionProvider;
     }
 
@@ -465,7 +466,7 @@ public class DomainObjectContainerDefaul
     }
 
     @Override
-    public void setAdapterMap(final AdapterMap adapterManager) {
+    public void setAdapterMap(AdapterMap adapterManager) {
         this.adapterMap = adapterManager;
     }
 
@@ -474,7 +475,7 @@ public class DomainObjectContainerDefaul
     }
 
     @Override
-    public void setObjectDirtier(final ObjectDirtier objectDirtier) {
+    public void setObjectDirtier(ObjectDirtier objectDirtier) {
         this.objectDirtier = objectDirtier;
     }
 
@@ -483,7 +484,7 @@ public class DomainObjectContainerDefaul
     }
 
     @Override
-    public void setObjectPersistor(final ObjectPersistor objectPersistor) {
+    public void setObjectPersistor(ObjectPersistor objectPersistor) {
         this.objectPersistor = objectPersistor;
     }
 }