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;
}
}