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();