You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2006/04/23 08:55:56 UTC
svn commit: r396226 - in /tapestry/tapestry5/tapestry-core/trunk/src:
main/aspect/org/apache/tapestry/internal/aspects/
main/java/org/apache/tapestry/internal/transform/
main/java/org/apache/tapestry/test/ main/java/org/apache/tapestry/util/
test/java/...
Author: hlship
Date: Sat Apr 22 23:55:55 2006
New Revision: 396226
URL: http://svn.apache.org/viewcvs?rev=396226&view=rev
Log:
More tweaks to the CheckNullParameters aspect support
Added:
tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/CatchNullParameters.aj
tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalCatchNullParameters.aj
- copied, changed from r396187, tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalCatchNullParametersAspect.aj
tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalUtilityChecks.aj
- copied, changed from r396172, tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalUtilityAspect.aj
tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/UtilityChecks.aj
Removed:
tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/AbstractCatchNullParametersAspect.aj
tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/AbstractUtilityAspect.aj
tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalCatchNullParametersAspect.aj
tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalUtilityAspect.aj
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ClassTransformerImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/InternalClassTransformationImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ReflectiveInstantiator.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TestBase.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/util/Defense.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/util/IdAllocator.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/CatchNullParametersAspectTest.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/NullTarget.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/util/DefenseTest.java
Added: tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/CatchNullParameters.aj
URL: http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/CatchNullParameters.aj?rev=396226&view=auto
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/CatchNullParameters.aj (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/CatchNullParameters.aj Sat Apr 22 23:55:55 2006
@@ -0,0 +1,78 @@
+package org.apache.tapestry.internal.aspects;
+
+import org.apache.tapestry.internal.annotations.SuppressNullCheck;
+
+/**
+ * Adds code to targeted methods and constructors that prevents null values from being passed in as
+ * parameters.
+ *
+ * @author Howard M. Lewis Ship
+ */
+@SuppressNullCheck
+public abstract aspect CatchNullParameters
+{
+ /**
+ * Overridden in concrete aspects to identify which classes are affected (typically, all within
+ * a particular package).
+ */
+ abstract pointcut targetClasses();
+
+ pointcut typeNotMarkedAsSuppressed() :
+ !within(@SuppressNullCheck Object+);
+
+ /** Look for methods and constructors that do NOT have the SuppressNullCheck annotation. */
+ pointcut executionNotSuppressed() :
+ execution(!@SuppressNullCheck !private * *(..)) ||
+ execution(!@SuppressNullCheck !private new(..));
+
+ /**
+ * Exclude methods (and constructors) with no parameters. Also, exclude equals() since it has to
+ * accept null (and we don't want to force you to put the
+ *
+ * @SupportNullCheck annotation on every class that overrides equals().
+ */
+ pointcut excludedMethods() :
+ execution(boolean equals(Object));
+
+ /**
+ * Find methods to check, within the set of target classes, where neither the entire class, nor
+ * the specific method, have the
+ *
+ * @SuppressNullCheck annotation, and limit to only applicable methods.
+ */
+ pointcut methodsToCheck() :
+ targetClasses() &&
+ typeNotMarkedAsSuppressed() &&
+ executionNotSuppressed() &&
+ !excludedMethods();
+
+ /**
+ * Selects each parameter. The specific useage here ensures that no-argument methods and
+ * constructors are skipped. Still trying to limit this so that primitive arguments aren't
+ * checked (currently, AspectJ is converting primitives to wrapper types and passing them into
+ * the advice method).
+ */
+ pointcut parametersToCheck(Object argumentValue) :
+ args(.., argumentValue);
+
+ /**
+ * Here's where the real work gets done. I think there may be a way to do this more efficiently
+ * where much more static logic is injected, triggered by arguments.
+ */
+ before(Object argumentValue) : methodsToCheck() && parametersToCheck(argumentValue)
+ {
+ if (argumentValue == null)
+ {
+ // The method signature could provide the parameterName (which would be awesome),
+ // but we need to know the parameter index.
+
+ String message = String.format(
+ "Parameter passed to method %s (at %s) was null.",
+ thisJoinPoint.getSignature().toString(),
+ thisJoinPoint.getSourceLocation());
+
+ throw new IllegalArgumentException(message);
+
+ }
+ }
+}
Copied: tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalCatchNullParameters.aj (from r396187, tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalCatchNullParametersAspect.aj)
URL: http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalCatchNullParameters.aj?p2=tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalCatchNullParameters.aj&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalCatchNullParametersAspect.aj&r1=396187&r2=396226&rev=396226&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalCatchNullParametersAspect.aj (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalCatchNullParameters.aj Sat Apr 22 23:55:55 2006
@@ -1,14 +1,11 @@
package org.apache.tapestry.internal.aspects;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
-
/**
* Targets null checks to all the org.apache.tapestry classes.
*
* @author Howard M. Lewis Ship
*/
-@SuppressNullCheck
-public aspect InternalCatchNullParametersAspect extends AbstractCatchNullParametersAspect
+public aspect InternalCatchNullParameters extends CatchNullParameters
{
pointcut targetClasses() :
within(org.apache.tapestry..*);
Copied: tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalUtilityChecks.aj (from r396172, tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalUtilityAspect.aj)
URL: http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalUtilityChecks.aj?p2=tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalUtilityChecks.aj&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalUtilityAspect.aj&r1=396172&r2=396226&rev=396226&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalUtilityAspect.aj (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalUtilityChecks.aj Sat Apr 22 23:55:55 2006
@@ -1,11 +1,11 @@
package org.apache.tapestry.internal.aspects;
/**
- * Targets {@link AbstractUtilityAspect} at all the visible classes within org.apache.tapestry.
+ * Targets {@link UtilityChecks} at all the visible classes within org.apache.tapestry.
*
* @author Howard M. Lewis Ship
*/
-public aspect InternalUtilityAspect extends AbstractUtilityAspect
+public aspect InternalUtilityChecks extends UtilityChecks
{
pointcut targetClasses() :
within(org.apache.tapestry..*);
Added: tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/UtilityChecks.aj
URL: http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/UtilityChecks.aj?rev=396226&view=auto
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/UtilityChecks.aj (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/UtilityChecks.aj Sat Apr 22 23:55:55 2006
@@ -0,0 +1,42 @@
+package org.apache.tapestry.internal.aspects;
+
+import org.apache.tapestry.internal.annotations.Utility;
+
+/**
+ * Abstract aspect that implements the rules for the {@link Utility} annotation.
+ *
+ * @author Howard M. Lewis Ship
+ */
+public abstract aspect UtilityChecks
+{
+ /**
+ * Overridden in concrete aspects to identify which classes are affected (typically, all within
+ * a particular package).
+ */
+ abstract pointcut targetClasses();
+
+ pointcut markedClasses(): @within(Utility) && targetClasses();
+
+ pointcut instanceMethods():
+ markedClasses() && execution(!static * *(..));
+
+ /** Matches anything but the default, no arguments constructor. */
+ pointcut constructors(): markedClasses() && execution(new(*));
+
+ declare error : instanceMethods() :
+ "Utility classes may not have instance methods.";
+
+ declare error : constructors() :
+ "Utility classes may not be instantiated, and are not allowed to declare constructors.";
+
+ before() : markedClasses() && execution(new())
+ {
+ String message = String
+ .format(
+ "Class %s has been marked as a utility class (with the @Utility annotation) and can not be instantiated.",
+ thisJoinPoint.getThis().getClass().getName());
+
+ throw new RuntimeException(message);
+ }
+
+}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ClassTransformerImpl.java
URL: http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ClassTransformerImpl.java?rev=396226&r1=396225&r2=396226&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ClassTransformerImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ClassTransformerImpl.java Sat Apr 22 23:55:55 2006
@@ -24,7 +24,6 @@
import org.apache.tapestry.transform.ClassTransformWorker;
import static org.apache.tapestry.util.CollectionFactory.newMap;
-import static org.apache.tapestry.util.Defense.notNull;
/**
* Implementation of {@link org.apache.tapestry.internal.transform.ClassTransformer}.
@@ -64,7 +63,7 @@
public Instantiator createInstantiator(Class componentClass)
{
- String className = notNull(componentClass, "componentClass").getName();
+ String className = componentClass.getName();
InternalClassTransformation ct = _nameToClassTransformation.get(className);
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImpl.java
URL: http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImpl.java?rev=396226&r1=396225&r2=396226&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImpl.java Sat Apr 22 23:55:55 2006
@@ -32,7 +32,6 @@
import static org.apache.tapestry.util.CollectionFactory.newMap;
import static org.apache.tapestry.util.CollectionFactory.newSet;
-import static org.apache.tapestry.util.Defense.notNull;
/**
* A wrapper around a Javassist class loader that allows certain classes to be modified as they are
@@ -71,7 +70,7 @@
public ComponentInstantiatorSourceImpl(ClassLoader parent)
{
- _parent = notNull(parent, "parent");
+ _parent = parent;
}
public void initializeService()
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/InternalClassTransformationImpl.java
URL: http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/InternalClassTransformationImpl.java?rev=396226&r1=396225&r2=396226&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/InternalClassTransformationImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/InternalClassTransformationImpl.java Sat Apr 22 23:55:55 2006
@@ -141,9 +141,6 @@
public <T extends Annotation> T getFieldAnnotation(String fieldName, Class<T> annotationClass)
{
- notNull(fieldName, "fieldName");
- notNull(annotationClass, "annotationClass");
-
Object[] annotations = findFieldAnnotations(fieldName);
return findAnnotationInList(annotationClass, annotations);
@@ -323,7 +320,7 @@
public void addImplementedInterface(Class interfaceClass)
{
- String interfaceName = notNull(interfaceClass, "interfaceClass").getName();
+ String interfaceName = interfaceClass.getName();
try
{
@@ -431,7 +428,6 @@
public void claimField(String fieldName, Object tag)
{
notBlank(fieldName, "fieldName");
- notNull(tag, "tag");
Object existing = _claimedFields.get(fieldName);
@@ -517,8 +513,6 @@
public List<String> findFieldsWithAnnotation(Class<? extends Annotation> annotationClass)
{
- notNull(annotationClass, "annotationClass");
-
List<String> result = newList();
for (CtField field : _ctClass.getDeclaredFields())
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ReflectiveInstantiator.java
URL: http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ReflectiveInstantiator.java?rev=396226&r1=396225&r2=396226&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ReflectiveInstantiator.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ReflectiveInstantiator.java Sat Apr 22 23:55:55 2006
@@ -19,8 +19,6 @@
import org.apache.tapestry.ResourceAware;
import org.apache.tapestry.internal.InternalComponentResources;
-import static org.apache.tapestry.util.Defense.notNull;
-
/**
* Implementation of {@link Instantiator} based on a class, a list of parameters to the class'
* constructor, and a instance of {@link org.apache.tapestry.internal.InternalComponentResources}.
@@ -45,11 +43,9 @@
*/
ReflectiveInstantiator(Class instanceClass, Object[] constructorParameters)
{
- _constructorParameters = notNull(constructorParameters, "constructorParameters");
+ _constructorParameters = constructorParameters;
- _constructor = findConstructor(
- notNull(instanceClass, "instanceClass"),
- constructorParameters.length);
+ _constructor = findConstructor(instanceClass, constructorParameters.length);
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TestBase.java
URL: http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TestBase.java?rev=396226&r1=396225&r2=396226&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TestBase.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TestBase.java Sat Apr 22 23:55:55 2006
@@ -14,6 +14,7 @@
package org.apache.tapestry.test;
+import org.apache.tapestry.internal.annotations.SuppressNullCheck;
import org.easymock.EasyMock;
import org.easymock.IMocksControl;
import org.testng.annotations.Configuration;
@@ -83,6 +84,7 @@
* @param returnValue
* value to be returned from the method call
*/
+ @SuppressNullCheck
protected final void setReturnValue(Object returnValue)
{
expectLastCall().andReturn(returnValue);
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/util/Defense.java
URL: http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/util/Defense.java?rev=396226&r1=396225&r2=396226&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/util/Defense.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/util/Defense.java Sat Apr 22 23:55:55 2006
@@ -22,12 +22,16 @@
*
* @author Howard M. Lewis Ship
*/
-@Utility @SuppressNullCheck
+@Utility
+@SuppressNullCheck
public final class Defense
{
/**
- * Checks that a method parameter value is not null, and returns it.
+ * Checks that a method parameter value is not null, and returns it. This method is used in
+ * situations where some of the parameters to a method are allowed to be null and other's arent.
+ * In that situation, the method will be annotated with {@link SuppressNullCheck}, and the
+ * relevent null checks will occur inside the method implementation.
*
* @param <T>
* the value type
@@ -36,13 +40,13 @@
* @param parameterName
* the name of the parameter, used for exception messages
* @return the value
- * @throws NullPointerException
+ * @throws IllegalArgumentException
* if the value is null
*/
public static <T> T notNull(T value, String parameterName)
{
if (value == null)
- throw new NullPointerException(UtilMessages.parameterWasNull(parameterName));
+ throw new IllegalArgumentException(UtilMessages.parameterWasNull(parameterName));
return value;
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/util/IdAllocator.java
URL: http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/util/IdAllocator.java?rev=396226&r1=396225&r2=396226&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/util/IdAllocator.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/util/IdAllocator.java Sat Apr 22 23:55:55 2006
@@ -14,13 +14,12 @@
package org.apache.tapestry.util;
-import static org.apache.tapestry.util.CollectionFactory.newMap;
-import static org.apache.tapestry.util.Defense.notNull;
-
import java.util.HashMap;
import java.util.IdentityHashMap;
import java.util.Map;
+import static org.apache.tapestry.util.CollectionFactory.newMap;
+
/**
* Used to "uniquify" names within a given context. A base name is passed in, and the return value
* is the base name, or the base name extended with a suffix to make it unique.
@@ -83,7 +82,7 @@
private IdAllocator(String namespace, Map<String, NameGenerator> generatorMap)
{
- _namespace = notNull(namespace, "namespace");
+ _namespace = namespace;
_generatorMap = generatorMap;
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/CatchNullParametersAspectTest.java
URL: http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/CatchNullParametersAspectTest.java?rev=396226&r1=396225&r2=396226&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/CatchNullParametersAspectTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/CatchNullParametersAspectTest.java Sat Apr 22 23:55:55 2006
@@ -14,6 +14,8 @@
package org.apache.tapestry.internal.aspects;
+import java.util.Collections;
+
import org.apache.tapestry.test.TestBase;
import org.testng.annotations.Test;
@@ -54,6 +56,45 @@
public void equalsAlwaysSuppressed()
{
new NullTarget("not null").equals(null);
+ }
+
+ @Test
+ public void allParametersChecked()
+ {
+ NullTarget t = new NullTarget("not null");
+
+ try
+ {
+ t.manyParameters(null, null, null);
+ unreachable();
+ }
+ catch (IllegalArgumentException ex)
+ {
+ // Expected.
+ }
+
+ try
+ {
+ t.manyParameters(this, null, null);
+ unreachable();
+ }
+ catch (IllegalArgumentException ex)
+ {
+ // Expected.
+ }
+
+ try
+ {
+ t.manyParameters(this, "ok", null);
+ unreachable();
+ }
+ catch (IllegalArgumentException ex)
+ {
+ // Expected.
+ }
+
+ t.manyParameters(this, "ok", Collections.EMPTY_MAP);
+
}
@Test
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/NullTarget.java
URL: http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/NullTarget.java?rev=396226&r1=396225&r2=396226&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/NullTarget.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/NullTarget.java Sat Apr 22 23:55:55 2006
@@ -14,6 +14,8 @@
package org.apache.tapestry.internal.aspects;
+import java.util.Map;
+
/**
* Used to test the CatchNullParametersAspect.
*
@@ -28,6 +30,16 @@
// Null check enforced
public NullTarget(String parameter)
+ {
+
+ }
+
+ public void primitiveParameter(int foo)
+ {
+
+ }
+
+ public void manyParameters(Object p1, String p2, Map p3)
{
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/util/DefenseTest.java
URL: http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/util/DefenseTest.java?rev=396226&r1=396225&r2=396226&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/util/DefenseTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/util/DefenseTest.java Sat Apr 22 23:55:55 2006
@@ -14,14 +14,14 @@
package org.apache.tapestry.util;
+import org.apache.tapestry.test.TestBase;
+import org.testng.annotations.Test;
+
import static org.apache.tapestry.util.Defense.notBlank;
import static org.apache.tapestry.util.Defense.notNull;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertSame;
-import org.apache.tapestry.test.TestBase;
-import org.testng.annotations.Test;
-
/**
* @author Howard M. Lewis Ship
*/
@@ -38,8 +38,7 @@
}
/**
- * Check that {@link Defense#notNull(T, String)} throws NPE when null, and
- * check the message.
+ * Check that {@link Defense#notNull(T, String)} throws NPE when null, and check the message.
*/
@Test
@@ -50,7 +49,7 @@
notNull(null, "foo");
unreachable();
}
- catch (NullPointerException ex)
+ catch (IllegalArgumentException ex)
{
assertEquals(ex.getMessage(), "Parameter foo was null.");
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org