You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2010/11/05 16:12:43 UTC
svn commit: r1031619 - in /incubator/isis/trunk/core:
metamodel/src/main/java/org/apache/isis/metamodel/util/
progmodel/src/main/java/org/apache/isis/metamodel/facets/actions/invoke/
runtime/src/main/java/org/apache/isis/runtime/persistence/query/
Author: danhaywood
Date: Fri Nov 5 15:12:42 2010
New Revision: 1031619
URL: http://svn.apache.org/viewvc?rev=1031619&view=rev
Log:
minor changes in core to help debugging (rethrowing runtime exceptions so can breakpoint)
Modified:
incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/metamodel/util/InvokeUtils.java
incubator/isis/trunk/core/progmodel/src/main/java/org/apache/isis/metamodel/facets/actions/invoke/ActionInvocationFacetViaMethod.java
incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/query/PersistenceQueryFindByPattern.java
Modified: incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/metamodel/util/InvokeUtils.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/metamodel/util/InvokeUtils.java?rev=1031619&r1=1031618&r2=1031619&view=diff
==============================================================================
--- incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/metamodel/util/InvokeUtils.java (original)
+++ incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/metamodel/util/InvokeUtils.java Fri Nov 5 15:12:42 2010
@@ -17,119 +17,114 @@
* under the License.
*/
+package org.apache.isis.metamodel.util;
-package org.apache.isis.metamodel.util;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.isis.applib.ApplicationException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.isis.applib.ApplicationException;
import org.apache.isis.commons.exceptions.IsisApplicationException;
-import org.apache.isis.commons.lang.WrapperUtils;
-import org.apache.isis.metamodel.exceptions.ReflectionException;
-import org.apache.isis.metamodel.specloader.internal.introspector.MethodFinderUtils;
-
-
-/**
- * TODO: remove duplication with {@link WrapperUtils} and {@link MethodFinderUtils}.
- */
-public class InvokeUtils {
-
-
- // //////////////////////////////////////////////////////////////
- // invoke
- // //////////////////////////////////////////////////////////////
-
- public static void invoke(final List<Method> methods, final Object object) {
- for(Method method: methods) {
- invoke(method, object);
- }
- }
-
- public static Object invoke(final Method method, final Object object) {
- final Object[] parameters = nullOrDefaultArgsFor(method);
- return invoke(method, object, parameters);
- }
-
- public static Object invoke(final Method method, final Object object, final Object[] parameters) {
- try {
- return method.invoke(object, parameters);
- } catch (final InvocationTargetException e) {
- invocationException("Exception executing " + method, e);
- return null;
- } catch (final IllegalAccessException e) {
- throw new ReflectionException("illegal access of " + method, e);
- }
- }
-
- // //////////////////////////////////////////////////////////////
- // invokeStatic
- // //////////////////////////////////////////////////////////////
-
- public static Object invokeStatic(final Method method, final Object[] parameters) {
- return invoke(method, null, parameters);
- }
-
- public static Object invokeStatic(final Method method) {
- return invoke(method, null, nullOrDefaultArgsFor(method));
- }
-
-
- // //////////////////////////////////////////////////////////////
- // invocationException
- // //////////////////////////////////////////////////////////////
-
- public static void invocationException(final String error, final InvocationTargetException e) {
- final Throwable targetException = e.getTargetException();
- if (targetException instanceof ApplicationException) {
- // an application exception from the domain code is re-thrown as an NO exception with same
- // semantics
- throw new IsisApplicationException(targetException);
- }
- if (targetException instanceof RuntimeException) {
- throw (RuntimeException) targetException;
- } else {
- throw new ReflectionException(targetException);
- }
- }
-
-
- // //////////////////////////////////////////////////////////////
- // Helpers
- // //////////////////////////////////////////////////////////////
-
- private static Map<Class<?>,Object> defaultByPrimitiveType = new HashMap<Class<?>, Object>();
- static {
- defaultByPrimitiveType.put(byte.class, (byte) 0);
- defaultByPrimitiveType.put(short.class, (short) 0);
- defaultByPrimitiveType.put(int.class, 0);
- defaultByPrimitiveType.put(long.class, 0L);
- defaultByPrimitiveType.put(char.class, 0);
- defaultByPrimitiveType.put(float.class, 0.0F);
- defaultByPrimitiveType.put(double.class, 0.0);
- defaultByPrimitiveType.put(boolean.class, false);
- }
-
-
- private static Object[] nullOrDefaultArgsFor(final Method method) {
- final Class<?>[] paramTypes = method.getParameterTypes();
- final Object[] parameters = new Object[paramTypes.length];
- for (int i = 0; i < parameters.length; i++) {
- parameters[i] = nullOrDefaultFor(paramTypes[i]);
- }
- return parameters;
- }
-
- /**
- * Returns the corresponding 'null' value for the primitives, or just <tt>null</tt> if the class
- * represents a non-primitive type.
- */
- private static Object nullOrDefaultFor(final Class<?> type) {
- return defaultByPrimitiveType.get(type);
- }
-
-
-}
+import org.apache.isis.commons.lang.WrapperUtils;
+import org.apache.isis.metamodel.exceptions.ReflectionException;
+import org.apache.isis.metamodel.specloader.internal.introspector.MethodFinderUtils;
+
+/**
+ * TODO: remove duplication with {@link WrapperUtils} and {@link MethodFinderUtils}.
+ */
+public class InvokeUtils {
+
+ // //////////////////////////////////////////////////////////////
+ // invoke
+ // //////////////////////////////////////////////////////////////
+
+ public static void invoke(final List<Method> methods, final Object object) {
+ for (Method method : methods) {
+ invoke(method, object);
+ }
+ }
+
+ public static Object invoke(final Method method, final Object object) {
+ final Object[] parameters = nullOrDefaultArgsFor(method);
+ return invoke(method, object, parameters);
+ }
+
+ public static Object invoke(final Method method, final Object object, final Object[] parameters) {
+ try {
+ return method.invoke(object, parameters);
+ } catch (final IllegalArgumentException e) {
+ throw e;
+ } catch (final InvocationTargetException e) {
+ invocationException("Exception executing " + method, e);
+ return null;
+ } catch (final IllegalAccessException e) {
+ throw new ReflectionException("illegal access of " + method, e);
+ }
+ }
+
+ // //////////////////////////////////////////////////////////////
+ // invokeStatic
+ // //////////////////////////////////////////////////////////////
+
+ public static Object invokeStatic(final Method method, final Object[] parameters) {
+ return invoke(method, null, parameters);
+ }
+
+ public static Object invokeStatic(final Method method) {
+ return invoke(method, null, nullOrDefaultArgsFor(method));
+ }
+
+ // //////////////////////////////////////////////////////////////
+ // invocationException
+ // //////////////////////////////////////////////////////////////
+
+ public static void invocationException(final String error, final InvocationTargetException e) {
+ final Throwable targetException = e.getTargetException();
+ if (targetException instanceof ApplicationException) {
+ // an application exception from the domain code is re-thrown as an NO exception with same
+ // semantics
+ throw new IsisApplicationException(targetException);
+ }
+ if (targetException instanceof RuntimeException) {
+ throw (RuntimeException) targetException;
+ } else {
+ throw new ReflectionException(targetException);
+ }
+ }
+
+ // //////////////////////////////////////////////////////////////
+ // Helpers
+ // //////////////////////////////////////////////////////////////
+
+ private static Map<Class<?>, Object> defaultByPrimitiveType = new HashMap<Class<?>, Object>();
+ static {
+ defaultByPrimitiveType.put(byte.class, (byte) 0);
+ defaultByPrimitiveType.put(short.class, (short) 0);
+ defaultByPrimitiveType.put(int.class, 0);
+ defaultByPrimitiveType.put(long.class, 0L);
+ defaultByPrimitiveType.put(char.class, 0);
+ defaultByPrimitiveType.put(float.class, 0.0F);
+ defaultByPrimitiveType.put(double.class, 0.0);
+ defaultByPrimitiveType.put(boolean.class, false);
+ }
+
+ private static Object[] nullOrDefaultArgsFor(final Method method) {
+ final Class<?>[] paramTypes = method.getParameterTypes();
+ final Object[] parameters = new Object[paramTypes.length];
+ for (int i = 0; i < parameters.length; i++) {
+ parameters[i] = nullOrDefaultFor(paramTypes[i]);
+ }
+ return parameters;
+ }
+
+ /**
+ * Returns the corresponding 'null' value for the primitives, or just <tt>null</tt> if the class represents a
+ * non-primitive type.
+ */
+ private static Object nullOrDefaultFor(final Class<?> type) {
+ return defaultByPrimitiveType.get(type);
+ }
+
+}
Modified: incubator/isis/trunk/core/progmodel/src/main/java/org/apache/isis/metamodel/facets/actions/invoke/ActionInvocationFacetViaMethod.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/progmodel/src/main/java/org/apache/isis/metamodel/facets/actions/invoke/ActionInvocationFacetViaMethod.java?rev=1031619&r1=1031618&r2=1031619&view=diff
==============================================================================
--- incubator/isis/trunk/core/progmodel/src/main/java/org/apache/isis/metamodel/facets/actions/invoke/ActionInvocationFacetViaMethod.java (original)
+++ incubator/isis/trunk/core/progmodel/src/main/java/org/apache/isis/metamodel/facets/actions/invoke/ActionInvocationFacetViaMethod.java Fri Nov 5 15:12:42 2010
@@ -17,7 +17,6 @@
* under the License.
*/
-
package org.apache.isis.metamodel.facets.actions.invoke;
import java.lang.reflect.InvocationTargetException;
@@ -25,7 +24,6 @@ import java.lang.reflect.Method;
import java.util.Collections;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.isis.metamodel.adapter.ObjectAdapter;
import org.apache.isis.metamodel.facets.FacetHolder;
import org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacet;
@@ -34,7 +32,7 @@ import org.apache.isis.metamodel.runtime
import org.apache.isis.metamodel.spec.ObjectSpecification;
import org.apache.isis.metamodel.specloader.ReflectiveActionException;
import org.apache.isis.metamodel.util.InvokeUtils;
-
+import org.apache.log4j.Logger;
public class ActionInvocationFacetViaMethod extends ActionInvocationFacetAbstract implements ImperativeFacet {
@@ -45,14 +43,10 @@ public class ActionInvocationFacetViaMet
private final ObjectSpecification onType;
private final ObjectSpecification returnType;
- private final RuntimeContext runtimeContext;
+ private final RuntimeContext runtimeContext;
- public ActionInvocationFacetViaMethod(
- final Method method,
- final ObjectSpecification onType,
- final ObjectSpecification returnType,
- final FacetHolder holder,
- final RuntimeContext runtimeContext) {
+ public ActionInvocationFacetViaMethod(final Method method, final ObjectSpecification onType,
+ final ObjectSpecification returnType, final FacetHolder holder, final RuntimeContext runtimeContext) {
super(holder);
this.method = method;
this.paramCount = method.getParameterTypes().length;
@@ -62,20 +56,24 @@ public class ActionInvocationFacetViaMet
}
/**
- * Returns a singleton list of the {@link Method} provided in the constructor.
+ * Returns a singleton list of the {@link Method} provided in the constructor.
*/
+ @Override
public List<Method> getMethods() {
- return Collections.singletonList(method);
+ return Collections.singletonList(method);
}
+ @Override
public ObjectSpecification getReturnType() {
return returnType;
}
+ @Override
public ObjectSpecification getOnType() {
return onType;
}
+ @Override
public ObjectAdapter invoke(final ObjectAdapter inObject, final ObjectAdapter[] parameters) {
if (parameters.length != paramCount) {
LOG.error(method + " requires " + paramCount + " parameters, not " + parameters.length);
@@ -99,10 +97,12 @@ public class ActionInvocationFacetViaMet
adapter.setTypeOfFacet(typeOfFacet);
return adapter;
+ } catch (final IllegalArgumentException e) {
+ throw e;
} catch (final InvocationTargetException e) {
if (e.getTargetException() instanceof IllegalStateException) {
throw new ReflectiveActionException("IllegalStateException thrown while executing " + method + " "
- + e.getTargetException().getMessage(), e.getTargetException());
+ + e.getTargetException().getMessage(), e.getTargetException());
} else {
InvokeUtils.invocationException("Exception executing " + method, e);
return null;
@@ -112,34 +112,31 @@ public class ActionInvocationFacetViaMet
}
}
+ private static Object unwrap(final ObjectAdapter adapter) {
+ return adapter == null ? null : adapter.getObject();
+ }
- private static Object unwrap(final ObjectAdapter adapter) {
- return adapter == null ? null : adapter.getObject();
- }
-
-
- public boolean impliesResolve() {
- return true;
- }
-
- public boolean impliesObjectChanged() {
- return false;
- }
-
+ @Override
+ public boolean impliesResolve() {
+ return true;
+ }
- @Override
+ @Override
+ public boolean impliesObjectChanged() {
+ return false;
+ }
+
+ @Override
protected String toStringValues() {
return "method=" + method;
}
-
-
- ///////////////////////////////////////////////////////////
+
+ // /////////////////////////////////////////////////////////
// Dependencies (from constructor)
- ///////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////
private RuntimeContext getRuntimeContext() {
- return runtimeContext;
- }
+ return runtimeContext;
+ }
}
-
Modified: incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/query/PersistenceQueryFindByPattern.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/query/PersistenceQueryFindByPattern.java?rev=1031619&r1=1031618&r2=1031619&view=diff
==============================================================================
--- incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/query/PersistenceQueryFindByPattern.java (original)
+++ incubator/isis/trunk/core/runtime/src/main/java/org/apache/isis/runtime/persistence/query/PersistenceQueryFindByPattern.java Fri Nov 5 15:12:42 2010
@@ -17,7 +17,6 @@
* under the License.
*/
-
package org.apache.isis.runtime.persistence.query;
import org.apache.isis.metamodel.adapter.ObjectAdapter;
@@ -35,16 +34,16 @@ public class PersistenceQueryFindByPatte
return pattern;
}
- public PersistenceQueryFindByPattern(
- final ObjectSpecification specification,
- final ObjectAdapter pattern) {
+ public PersistenceQueryFindByPattern(final ObjectSpecification specification, final ObjectAdapter pattern) {
super(specification);
this.pattern = pattern;
}
+ @Override
public boolean matches(final ObjectAdapter object) {
- final ObjectSpecification requiredType = pattern.getSpecification();
- return requiredType.equals(object.getSpecification()) && matchesPattern(pattern, object);
+ final ObjectSpecification requiredSpec = pattern.getSpecification();
+ ObjectSpecification objectSpec = object.getSpecification();
+ return objectSpec.equals(requiredSpec) && matchesPattern(pattern, object);
}
private boolean matchesPattern(final ObjectAdapter pattern, final ObjectAdapter instance) {
@@ -70,7 +69,7 @@ public class PersistenceQueryFindByPatte
// find the objects
final ObjectAdapter reqd = fld.get(pattern);
final ObjectAdapter search = fld.get(object);
-
+
// compare the titles
final String r = reqd.titleString().toLowerCase();
final String s = search.titleString().toLowerCase();