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 2005/07/28 00:24:50 UTC
cvs commit: jakarta-tapestry/framework/src/java/org/apache/tapestry/resolver PageSpecificationResolverImpl.java
hlship 2005/07/27 15:24:50
Modified: annotations/src/java/org/apache/tapestry/annotations
InjectStateAnnotationWorker.java
InjectComponentAnnotationWorker.java
InjectAssetAnnotationWorker.java
MessageAnnotationWorker.java
InjectObjectAnnotationWorker.java
framework/src/java/org/apache/tapestry/enhance
EnhanceMessages.java EnhancementOperationImpl.java
ParameterPropertyWorker.java InjectBeanWorker.java
EnhanceUtils.java InjectScriptWorker.java
InjectPageWorker.java AbstractPropertyWorker.java
InjectSpecificationWorker.java
EnhancementOperation.java InjectStateWorker.java
InjectObjectWorker.java
SpecifiedPropertyWorker.java
EnhanceStrings.properties InjectMetaWorker.java
InjectAssetWorker.java InjectComponentWorker.java
InjectMessagesWorker.java
annotations/src/test/org/apache/tapestry/annotations
TestInjectObjectAnnotationWorker.java
TestInjectComponentAnnotationWorker.java
TestInjectStateAnnotationWorker.java
TestMessageAnnotationWorker.java
TestInjectAssetAnnotationWorker.java
framework/src/test/org/apache/tapestry/enhance
TestSpecifiedPropertyWorker.java
TestInjectMetaWorker.java
TestInjectComponentWorker.java
TestInjectMessagesWorker.java
TestInjectPageWorker.java
TestInjectSpecificationWorker.java
TestInjectStateWorker.java
TestAbstractPropertyWorker.java
TestEnhancementOperation.java
TestParameterPropertyWorker.java
TestInjectBeanWorker.java
TestInjectScriptWorker.java
TestInjectObjectWorker.java
TestInjectAssetWorker.java
framework/src/java/org/apache/tapestry/test
CreatePropertyWorker.java Creator.java
framework/src/test/org/apache/tapestry/junit
TestComponentMessages.java
. status.xml
framework/src/java/org/apache/tapestry/resolver
PageSpecificationResolverImpl.java
Added: framework/src/test/org/apache/tapestry/enhance
BaseEnhancementTestCase.java
framework/src/java/org/apache/tapestry/test
CreatorLocation.java
Log:
TAPESTRY-441: Poor reporting of duplicate method implementations
Revision Changes Path
1.4 +1 -1 jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/InjectStateAnnotationWorker.java
Index: InjectStateAnnotationWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/InjectStateAnnotationWorker.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- InjectStateAnnotationWorker.java 2 Jul 2005 22:51:23 -0000 1.3
+++ InjectStateAnnotationWorker.java 27 Jul 2005 22:24:47 -0000 1.4
@@ -51,7 +51,7 @@
String propertyName = AnnotationUtils.getPropertyName(method);
- _delegate.injectState(op, is.value(), propertyName);
+ _delegate.injectState(op, is.value(), propertyName, location);
}
public void setApplicationStateManager(ApplicationStateManager applicationStateManager)
1.4 +1 -1 jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/InjectComponentAnnotationWorker.java
Index: InjectComponentAnnotationWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/InjectComponentAnnotationWorker.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- InjectComponentAnnotationWorker.java 2 Jul 2005 22:51:23 -0000 1.3
+++ InjectComponentAnnotationWorker.java 27 Jul 2005 22:24:47 -0000 1.4
@@ -49,7 +49,7 @@
InjectComponent ic = method.getAnnotation(InjectComponent.class);
String propertyName = AnnotationUtils.getPropertyName(method);
- _delegate.injectComponent(op, ic.value(), propertyName);
+ _delegate.injectComponent(op, ic.value(), propertyName, location);
}
}
1.4 +2 -2 jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/InjectAssetAnnotationWorker.java
Index: InjectAssetAnnotationWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/InjectAssetAnnotationWorker.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- InjectAssetAnnotationWorker.java 2 Jul 2005 22:51:23 -0000 1.3
+++ InjectAssetAnnotationWorker.java 27 Jul 2005 22:24:47 -0000 1.4
@@ -47,10 +47,10 @@
Method method, Location location)
{
InjectAsset as = method.getAnnotation(InjectAsset.class);
-
+
String propertyName = AnnotationUtils.getPropertyName(method);
- _delegate.injectAsset(op, as.value(), propertyName);
+ _delegate.injectAsset(op, as.value(), propertyName, location);
}
}
1.5 +1 -1 jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/MessageAnnotationWorker.java
Index: MessageAnnotationWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/MessageAnnotationWorker.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- MessageAnnotationWorker.java 8 Jul 2005 05:53:39 -0000 1.4
+++ MessageAnnotationWorker.java 27 Jul 2005 22:24:47 -0000 1.5
@@ -80,7 +80,7 @@
builder.end();
- op.addMethod(Modifier.PUBLIC, new MethodSignature(method), builder.toString());
+ op.addMethod(Modifier.PUBLIC, new MethodSignature(method), builder.toString(), location);
if (isGetter(method))
op.claimProperty(AnnotationUtils.getPropertyName(method));
1.5 +1 -1 jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/InjectObjectAnnotationWorker.java
Index: InjectObjectAnnotationWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/InjectObjectAnnotationWorker.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- InjectObjectAnnotationWorker.java 2 Jul 2005 22:51:23 -0000 1.4
+++ InjectObjectAnnotationWorker.java 27 Jul 2005 22:24:47 -0000 1.5
@@ -55,7 +55,7 @@
String propertyName = AnnotationUtils.getPropertyName(method);
- _delegate.injectObject(op, object, propertyName, null);
+ _delegate.injectObject(op, object, propertyName, location);
}
public void setProvider(InjectedValueProvider provider)
1.19 +7 -0 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/EnhanceMessages.java
Index: EnhanceMessages.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/EnhanceMessages.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- EnhanceMessages.java 8 Jul 2005 14:45:13 -0000 1.18
+++ EnhanceMessages.java 27 Jul 2005 22:24:48 -0000 1.19
@@ -17,8 +17,10 @@
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
+import org.apache.hivemind.Location;
import org.apache.hivemind.impl.MessageFormatter;
import org.apache.hivemind.service.ClassFabUtils;
+import org.apache.hivemind.service.MethodSignature;
import org.apache.tapestry.IAsset;
import org.apache.tapestry.Tapestry;
@@ -132,4 +134,9 @@
.getJavaClassName(baseClass), cause);
}
+ public static String methodConflict(MethodSignature sig, Location existing)
+ {
+ return _formatter.format("method-conflict", sig, existing);
+ }
+
}
\ No newline at end of file
1.24 +21 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/EnhancementOperationImpl.java
Index: EnhancementOperationImpl.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/EnhancementOperationImpl.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- EnhancementOperationImpl.java 8 Jul 2005 14:46:56 -0000 1.23
+++ EnhancementOperationImpl.java 27 Jul 2005 22:24:48 -0000 1.24
@@ -33,6 +33,7 @@
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.ClassResolver;
import org.apache.hivemind.HiveMind;
+import org.apache.hivemind.Location;
import org.apache.hivemind.service.BodyBuilder;
import org.apache.hivemind.service.ClassFab;
import org.apache.hivemind.service.ClassFactory;
@@ -101,6 +102,13 @@
private final IdAllocator _idAllocator = new IdAllocator();
+ /**
+ * Map keyed on MethodSignature, value is Location. Used to track which methods have been
+ * created, based on which location data (identified conflicts).
+ */
+
+ private final Map _methods = new HashMap();
+
public EnhancementOperationImpl(ClassResolver classResolver,
IComponentSpecification specification, Class baseClass, ClassFactory classFactory)
{
@@ -332,8 +340,20 @@
return EnhanceUtils.createAccessorMethodName(propertyName);
}
- public void addMethod(int modifier, MethodSignature sig, String methodBody)
+ public void addMethod(int modifier, MethodSignature sig, String methodBody, Location location)
{
+ Defense.notNull(sig, "sig");
+ Defense.notNull(methodBody, "methodBody");
+ Defense.notNull(location, "location");
+
+ Location existing = (Location) _methods.get(sig);
+ if (existing != null)
+ throw new ApplicationRuntimeException(EnhanceMessages.methodConflict(
+ sig,
+ existing), location, null);
+
+ _methods.put(sig, location);
+
_classFab.addMethod(modifier, sig, methodBody);
}
1.16 +14 -8 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/ParameterPropertyWorker.java
Index: ParameterPropertyWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/ParameterPropertyWorker.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- ParameterPropertyWorker.java 21 Jul 2005 13:17:57 -0000 1.15
+++ ParameterPropertyWorker.java 27 Jul 2005 22:24:48 -0000 1.16
@@ -19,6 +19,7 @@
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.ErrorLog;
+import org.apache.hivemind.Location;
import org.apache.hivemind.service.BodyBuilder;
import org.apache.hivemind.service.ClassFabUtils;
import org.apache.hivemind.service.MethodSignature;
@@ -77,7 +78,7 @@
String specifiedType = ps.getType();
boolean cache = ps.getCache();
- addParameter(op, parameterName, propertyName, specifiedType, cache);
+ addParameter(op, parameterName, propertyName, specifiedType, cache, ps.getLocation());
}
/**
@@ -96,10 +97,12 @@
* @param cache
* if true, then the value should be cached while the component renders; false (a
* much less common case) means that every access will work through binding object.
+ * @param location
+ * TODO
*/
public void addParameter(EnhancementOperation op, String parameterName, String propertyName,
- String specifiedType, boolean cache)
+ String specifiedType, boolean cache, Location location)
{
Defense.notNull(op, "op");
Defense.notNull(parameterName, "parameterName");
@@ -132,7 +135,8 @@
fieldName,
defaultFieldName,
cachedFieldName,
- cache);
+ cache,
+ location);
buildMutator(
op,
@@ -141,7 +145,8 @@
propertyType,
fieldName,
defaultFieldName,
- cachedFieldName);
+ cachedFieldName,
+ location);
extendCleanupAfterRender(
op,
@@ -191,7 +196,8 @@
}
private void buildMutator(EnhancementOperation op, String parameterName, String propertyName,
- Class propertyType, String fieldName, String defaultFieldName, String cachedFieldName)
+ Class propertyType, String fieldName, String defaultFieldName, String cachedFieldName,
+ Location location)
{
BodyBuilder builder = new BodyBuilder();
builder.begin();
@@ -237,14 +243,14 @@
op.addMethod(Modifier.PUBLIC, new MethodSignature(void.class, mutatorMethodName,
new Class[]
- { propertyType }, null), builder.toString());
+ { propertyType }, null), builder.toString(), location);
}
// Package private for testing
void buildAccessor(EnhancementOperation op, String parameterName, String propertyName,
Class propertyType, String fieldName, String defaultFieldName, String cachedFieldName,
- boolean cache)
+ boolean cache, Location location)
{
BodyBuilder builder = new BodyBuilder();
builder.begin();
@@ -283,7 +289,7 @@
String accessorMethodName = op.getAccessorMethodName(propertyName);
op.addMethod(Modifier.PUBLIC, new MethodSignature(propertyType, accessorMethodName, null,
- null), builder.toString());
+ null), builder.toString(), location);
}
public void setErrorLog(ErrorLog errorLog)
1.4 +5 -3 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectBeanWorker.java
Index: InjectBeanWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectBeanWorker.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- InjectBeanWorker.java 8 Jun 2005 19:58:43 -0000 1.3
+++ InjectBeanWorker.java 27 Jul 2005 22:24:48 -0000 1.4
@@ -18,6 +18,7 @@
import java.util.Iterator;
import org.apache.hivemind.ErrorLog;
+import org.apache.hivemind.Location;
import org.apache.hivemind.service.ClassFabUtils;
import org.apache.hivemind.service.MethodSignature;
import org.apache.hivemind.util.Defense;
@@ -49,7 +50,7 @@
{
try
{
- injectBean(op, name, propertyName);
+ injectBean(op, name, propertyName, bs.getLocation());
}
catch (Exception ex)
{
@@ -60,7 +61,8 @@
}
}
- public void injectBean(EnhancementOperation op, String beanName, String propertyName)
+ public void injectBean(EnhancementOperation op, String beanName, String propertyName,
+ Location location)
{
Defense.notNull(op, "op");
Defense.notNull(beanName, "beanName");
@@ -79,7 +81,7 @@
op.addMethod(Modifier.PUBLIC, sig, "return ("
+ ClassFabUtils.getJavaClassName(propertyType) + ") getBeans().getBean(\""
- + beanName + "\");");
+ + beanName + "\");", location);
}
public void setErrorLog(ErrorLog errorLog)
1.13 +6 -4 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/EnhanceUtils.java
Index: EnhanceUtils.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/EnhanceUtils.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- EnhanceUtils.java 15 May 2005 22:56:36 -0000 1.12
+++ EnhanceUtils.java 27 Jul 2005 22:24:48 -0000 1.13
@@ -19,6 +19,7 @@
import java.util.Map;
import org.apache.hivemind.ApplicationRuntimeException;
+import org.apache.hivemind.Location;
import org.apache.hivemind.service.ClassFabUtils;
import org.apache.hivemind.service.MethodSignature;
import org.apache.hivemind.util.Defense;
@@ -64,23 +65,24 @@
}
public static void createSimpleAccessor(EnhancementOperation op, String fieldName,
- String propertyName, Class propertyType)
+ String propertyName, Class propertyType, Location location)
{
String methodName = op.getAccessorMethodName(propertyName);
op.addMethod(
Modifier.PUBLIC,
new MethodSignature(propertyType, methodName, null, null),
- "return " + fieldName + ";");
+ "return " + fieldName + ";",
+ location);
}
public static void createSimpleMutator(EnhancementOperation op, String fieldName,
- String propertyName, Class propertyType)
+ String propertyName, Class propertyType, Location location)
{
String methodName = createMutatorMethodName(propertyName);
op.addMethod(Modifier.PUBLIC, new MethodSignature(void.class, methodName, new Class[]
- { propertyType }, null), fieldName + " = $1;");
+ { propertyType }, null), fieldName + " = $1;", location);
}
/**
1.6 +1 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectScriptWorker.java
Index: InjectScriptWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectScriptWorker.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- InjectScriptWorker.java 16 Jun 2005 12:03:17 -0000 1.5
+++ InjectScriptWorker.java 27 Jul 2005 22:24:48 -0000 1.6
@@ -81,7 +81,7 @@
MethodSignature sig = new MethodSignature(propertyType, methodName, null, null);
- op.addMethod(Modifier.PUBLIC, sig, "return " + fieldName + ".getScript();");
+ op.addMethod(Modifier.PUBLIC, sig, "return " + fieldName + ".getScript();", location);
}
public void setSource(IScriptSource source)
1.2 +1 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectPageWorker.java
Index: InjectPageWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectPageWorker.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- InjectPageWorker.java 19 Jun 2005 16:06:29 -0000 1.1
+++ InjectPageWorker.java 27 Jul 2005 22:24:48 -0000 1.2
@@ -65,6 +65,6 @@
builder.add("getPage().getRequestCycle().getPage(\"{0}\");", pageName);
- op.addMethod(Modifier.PUBLIC, sig, builder.toString());
+ op.addMethod(Modifier.PUBLIC, sig, builder.toString(), location);
}
}
1.6 +8 -5 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/AbstractPropertyWorker.java
Index: AbstractPropertyWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/AbstractPropertyWorker.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- AbstractPropertyWorker.java 18 Apr 2005 17:06:34 -0000 1.5
+++ AbstractPropertyWorker.java 27 Jul 2005 22:24:48 -0000 1.6
@@ -17,6 +17,7 @@
import java.util.Iterator;
import org.apache.hivemind.ErrorLog;
+import org.apache.hivemind.Location;
import org.apache.tapestry.IComponent;
import org.apache.tapestry.event.PageDetachListener;
import org.apache.tapestry.spec.IComponentSpecification;
@@ -34,6 +35,8 @@
public void performEnhancement(EnhancementOperation op, IComponentSpecification spec)
{
+ Location location = spec.getLocation();
+
Iterator i = op.findUnclaimedAbstractProperties().iterator();
while (i.hasNext())
@@ -42,19 +45,19 @@
try
{
- createProperty(op, name);
+ createProperty(op, name, location);
}
catch (Exception ex)
{
_errorLog.error(
EnhanceMessages.errorAddingProperty(name, op.getBaseClass(), ex),
- spec.getLocation(),
+ location,
ex);
}
}
}
- private void createProperty(EnhancementOperation op, String name)
+ private void createProperty(EnhancementOperation op, String name, Location location)
{
// This won't be null because its always for existing properties.
@@ -66,8 +69,8 @@
op.addField(fieldName, propertyType);
op.addField(defaultFieldName, propertyType);
- EnhanceUtils.createSimpleAccessor(op, fieldName, name, propertyType);
- EnhanceUtils.createSimpleMutator(op, fieldName, name, propertyType);
+ EnhanceUtils.createSimpleAccessor(op, fieldName, name, propertyType, location);
+ EnhanceUtils.createSimpleMutator(op, fieldName, name, propertyType, location);
// Copy the real attribute into the default attribute inside finish load
// (allowing a default value to be set inside finishLoad()).
1.7 +2 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectSpecificationWorker.java
Index: InjectSpecificationWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectSpecificationWorker.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- InjectSpecificationWorker.java 8 Jun 2005 19:58:42 -0000 1.6
+++ InjectSpecificationWorker.java 27 Jul 2005 22:24:48 -0000 1.7
@@ -60,7 +60,8 @@
op,
fieldName,
SPECIFICATION_PROPERTY_NAME,
- IComponentSpecification.class);
+ IComponentSpecification.class,
+ spec.getLocation());
}
public void setErrorLog(ErrorLog errorLog)
1.17 +5 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/EnhancementOperation.java
Index: EnhancementOperation.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/EnhancementOperation.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- EnhancementOperation.java 7 Jun 2005 17:41:40 -0000 1.16
+++ EnhancementOperation.java 27 Jul 2005 22:24:48 -0000 1.17
@@ -16,6 +16,7 @@
import java.util.List;
+import org.apache.hivemind.Location;
import org.apache.hivemind.service.MethodSignature;
/**
@@ -101,8 +102,11 @@
* the method signature (defining name, return type, etc.)
* @param methodBody
* a Javassist code snippet for the method body
+ * @param location
+ * a location used to identify "why" the method was added; the location may later be
+ * used to describe conflicts. May not be null.
*/
- public void addMethod(int modifier, MethodSignature sig, String methodBody);
+ public void addMethod(int modifier, MethodSignature sig, String methodBody, Location location);
/**
* Returns the base component class, as defined in the specification (or defaulted). An enhaced
1.9 +6 -4 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectStateWorker.java
Index: InjectStateWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectStateWorker.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- InjectStateWorker.java 15 Jun 2005 13:34:31 -0000 1.8
+++ InjectStateWorker.java 27 Jul 2005 22:24:48 -0000 1.9
@@ -16,6 +16,7 @@
import java.lang.reflect.Modifier;
+import org.apache.hivemind.Location;
import org.apache.hivemind.service.BodyBuilder;
import org.apache.hivemind.service.ClassFabUtils;
import org.apache.hivemind.service.MethodSignature;
@@ -39,10 +40,11 @@
public void performEnhancement(EnhancementOperation op, InjectSpecification spec)
{
- injectState(op, spec.getObject(), spec.getProperty());
+ injectState(op, spec.getObject(), spec.getProperty(), spec.getLocation());
}
- public void injectState(EnhancementOperation op, String objectName, String propertyName)
+ public void injectState(EnhancementOperation op, String objectName, String propertyName,
+ Location location)
{
Defense.notNull(op, "op");
Defense.notNull(objectName, "objectName");
@@ -75,7 +77,7 @@
MethodSignature sig = new MethodSignature(propertyType, methodName, null, null);
- op.addMethod(Modifier.PUBLIC, sig, builder.toString());
+ op.addMethod(Modifier.PUBLIC, sig, builder.toString(), location);
// Mutator
@@ -89,7 +91,7 @@
new Class[]
{ propertyType }, null);
- op.addMethod(Modifier.PUBLIC, sig, builder.toString());
+ op.addMethod(Modifier.PUBLIC, sig, builder.toString(), location);
// Extend pageDetached() to clean out the cached field value.
1.7 +1 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectObjectWorker.java
Index: InjectObjectWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectObjectWorker.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- InjectObjectWorker.java 9 Jul 2005 16:40:31 -0000 1.6
+++ InjectObjectWorker.java 27 Jul 2005 22:24:48 -0000 1.7
@@ -75,7 +75,7 @@
op.addMethod(
Modifier.PUBLIC,
new MethodSignature(propertyType, methodName, null, null),
- "return " + fieldName + ";");
+ "return " + fieldName + ";", location);
}
public void setProvider(InjectedValueProvider provider)
1.14 +6 -5 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/SpecifiedPropertyWorker.java
Index: SpecifiedPropertyWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/SpecifiedPropertyWorker.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- SpecifiedPropertyWorker.java 8 Jun 2005 19:58:43 -0000 1.13
+++ SpecifiedPropertyWorker.java 27 Jul 2005 22:24:48 -0000 1.14
@@ -85,7 +85,8 @@
addProperty(op, propertyName, specifiedType, persistent, initialValue, location);
}
- public void addProperty(EnhancementOperation op, String propertyName, String specifiedType, boolean persistent, String initialValue, Location location)
+ public void addProperty(EnhancementOperation op, String propertyName, String specifiedType,
+ boolean persistent, String initialValue, Location location)
{
Class propertyType = EnhanceUtils.extractPropertyType(op, propertyName, specifiedType);
@@ -99,9 +100,9 @@
// if they exist. 4.0 is less picky ... it blindly adds new methods, possibly
// overwriting methods in the base component class.
- EnhanceUtils.createSimpleAccessor(op, field, propertyName, propertyType);
+ EnhanceUtils.createSimpleAccessor(op, field, propertyName, propertyType, location);
- addMutator(op, propertyName, propertyType, field, persistent);
+ addMutator(op, propertyName, propertyType, field, persistent, location);
if (initialValue == null)
addReinitializer(op, propertyType, field);
@@ -174,7 +175,7 @@
}
private void addMutator(EnhancementOperation op, String propertyName, Class propertyType,
- String fieldName, boolean persistent)
+ String fieldName, boolean persistent, Location location)
{
String methodName = EnhanceUtils.createMutatorMethodName(propertyName);
@@ -196,7 +197,7 @@
MethodSignature sig = new MethodSignature(void.class, methodName, new Class[]
{ propertyType }, null);
- op.addMethod(Modifier.PUBLIC, sig, body.toString());
+ op.addMethod(Modifier.PUBLIC, sig, body.toString(), location);
}
public void setErrorLog(ErrorLog errorLog)
1.16 +2 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/EnhanceStrings.properties
Index: EnhanceStrings.properties
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/EnhanceStrings.properties,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- EnhanceStrings.properties 8 Jul 2005 14:45:13 -0000 1.15
+++ EnhanceStrings.properties 27 Jul 2005 22:24:48 -0000 1.16
@@ -26,4 +26,5 @@
wrong-type-for-property=Property {0} is type {1}, which is not compatible with {2}.
wrong-type-for-page-injection=Property {0} is type {1}, which is not compatible with injection. The property type should be Object, IPage, or a specific page class.
incompatible-property-type=Property {0} is type {1}, which is not compatible with the expected type, {2}.
-class-enhancement-failure=Failure enhancing class {0}: {1}
\ No newline at end of file
+class-enhancement-failure=Failure enhancing class {0}: {1}
+method-conflict=A new implementation of method ''{0}'' conflicts with an existing implementation (at {1}).
\ No newline at end of file
1.5 +13 -11 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectMetaWorker.java
Index: InjectMetaWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectMetaWorker.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- InjectMetaWorker.java 8 Jun 2005 19:58:43 -0000 1.4
+++ InjectMetaWorker.java 27 Jul 2005 22:24:48 -0000 1.5
@@ -18,6 +18,7 @@
import java.util.HashMap;
import java.util.Map;
+import org.apache.hivemind.Location;
import org.apache.hivemind.service.BodyBuilder;
import org.apache.hivemind.service.ClassFabUtils;
import org.apache.hivemind.service.MethodSignature;
@@ -58,10 +59,11 @@
String propertyName = spec.getProperty();
String metaKey = spec.getObject();
- injectMetaValue(op, propertyName, metaKey);
+ injectMetaValue(op, propertyName, metaKey, spec.getLocation());
}
- public void injectMetaValue(EnhancementOperation op, String propertyName, String metaKey)
+ public void injectMetaValue(EnhancementOperation op, String propertyName, String metaKey,
+ Location location)
{
Defense.notNull(op, "op");
Defense.notNull(propertyName, "propertyName");
@@ -81,21 +83,21 @@
if (parser != null)
{
- addPrimitive(op, metaKey, propertyName, sig, sourceName, parser);
+ addPrimitive(op, metaKey, propertyName, sig, sourceName, parser, location);
return;
}
if (propertyType == char.class)
{
- addCharacterPrimitive(op, metaKey, propertyName, sig, sourceName);
+ addCharacterPrimitive(op, metaKey, propertyName, sig, sourceName, location);
return;
}
- addObject(op, metaKey, propertyName, propertyType, sig, sourceName);
+ addObject(op, metaKey, propertyName, propertyType, sig, sourceName, location);
}
private void addPrimitive(EnhancementOperation op, String metaKey, String propertyName,
- MethodSignature sig, String sourceName, String parser)
+ MethodSignature sig, String sourceName, String parser, Location location)
{
BodyBuilder builder = new BodyBuilder();
builder.begin();
@@ -106,11 +108,11 @@
builder.addln("return {0}(meta);", parser);
builder.end();
- op.addMethod(Modifier.PUBLIC, sig, builder.toString());
+ op.addMethod(Modifier.PUBLIC, sig, builder.toString(), location);
}
private void addCharacterPrimitive(EnhancementOperation op, String metaKey,
- String propertyName, MethodSignature sig, String sourceName)
+ String propertyName, MethodSignature sig, String sourceName, Location location)
{
BodyBuilder builder = new BodyBuilder();
builder.begin();
@@ -121,11 +123,11 @@
builder.addln("return meta.charAt(0);");
builder.end();
- op.addMethod(Modifier.PUBLIC, sig, builder.toString());
+ op.addMethod(Modifier.PUBLIC, sig, builder.toString(), location);
}
private void addObject(EnhancementOperation op, String metaKey, String propertyName,
- Class propertyType, MethodSignature sig, String sourceName)
+ Class propertyType, MethodSignature sig, String sourceName, Location location)
{
String valueConverterName = op.addInjectedField(
"_$valueConverter",
@@ -143,7 +145,7 @@
.getJavaClassName(propertyType), valueConverterName, classRef);
builder.end();
- op.addMethod(Modifier.PUBLIC, sig, builder.toString());
+ op.addMethod(Modifier.PUBLIC, sig, builder.toString(), location);
}
public void setSource(ComponentPropertySource source)
1.5 +4 -3 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectAssetWorker.java
Index: InjectAssetWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectAssetWorker.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- InjectAssetWorker.java 8 Jul 2005 14:45:13 -0000 1.4
+++ InjectAssetWorker.java 27 Jul 2005 22:24:48 -0000 1.5
@@ -18,6 +18,7 @@
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.ErrorLog;
+import org.apache.hivemind.Location;
import org.apache.hivemind.util.Defense;
import org.apache.tapestry.IAsset;
import org.apache.tapestry.IComponent;
@@ -49,7 +50,7 @@
{
try
{
- injectAsset(op, name, propertyName);
+ injectAsset(op, name, propertyName, as.getLocation());
}
catch (Exception ex)
{
@@ -60,7 +61,7 @@
}
}
- public void injectAsset(EnhancementOperation op, String assetName, String propertyName)
+ public void injectAsset(EnhancementOperation op, String assetName, String propertyName, Location location)
{
Defense.notNull(op, "op");
Defense.notNull(assetName, "assetName");
@@ -80,7 +81,7 @@
op.addField(fieldName, propertyType);
- EnhanceUtils.createSimpleAccessor(op, fieldName, propertyName, propertyType);
+ EnhanceUtils.createSimpleAccessor(op, fieldName, propertyName, propertyType, location);
// i.e. _$fred = getAsset("barney");
1.4 +4 -3 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectComponentWorker.java
Index: InjectComponentWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectComponentWorker.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- InjectComponentWorker.java 8 Jun 2005 19:58:43 -0000 1.3
+++ InjectComponentWorker.java 27 Jul 2005 22:24:48 -0000 1.4
@@ -17,6 +17,7 @@
import java.util.Iterator;
import org.apache.hivemind.ErrorLog;
+import org.apache.hivemind.Location;
import org.apache.hivemind.service.ClassFabUtils;
import org.apache.hivemind.util.Defense;
import org.apache.tapestry.IComponent;
@@ -50,7 +51,7 @@
{
try
{
- injectComponent(op, id, propertyName);
+ injectComponent(op, id, propertyName, cc.getLocation());
}
catch (Exception ex)
{
@@ -61,7 +62,7 @@
}
}
- public void injectComponent(EnhancementOperation op, String componentId, String propertyName)
+ public void injectComponent(EnhancementOperation op, String componentId, String propertyName, Location location)
{
Defense.notNull(op, "op");
Defense.notNull(componentId, "componentId");
@@ -75,7 +76,7 @@
op.addField(fieldName, propertyType);
- EnhanceUtils.createSimpleAccessor(op, fieldName, propertyName, propertyType);
+ EnhanceUtils.createSimpleAccessor(op, fieldName, propertyName, propertyType, location);
// I.e. _$fred = (IComponent) getComponent("fred");
1.7 +7 -4 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectMessagesWorker.java
Index: InjectMessagesWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectMessagesWorker.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- InjectMessagesWorker.java 8 Jun 2005 19:58:43 -0000 1.6
+++ InjectMessagesWorker.java 27 Jul 2005 22:24:48 -0000 1.7
@@ -17,6 +17,7 @@
import java.lang.reflect.Modifier;
import org.apache.hivemind.ErrorLog;
+import org.apache.hivemind.Location;
import org.apache.hivemind.Messages;
import org.apache.hivemind.service.BodyBuilder;
import org.apache.hivemind.service.MethodSignature;
@@ -44,18 +45,20 @@
public void performEnhancement(EnhancementOperation op, IComponentSpecification spec)
{
+ Location location = spec.getLocation();
+
try
{
- injectMessages(op);
+ injectMessages(op, location);
}
catch (Exception ex)
{
_errorLog.error(EnhanceMessages.errorAddingProperty(MESSAGES_PROPERTY, op
- .getBaseClass(), ex), null, ex);
+ .getBaseClass(), ex), location, ex);
}
}
- public void injectMessages(EnhancementOperation op)
+ public void injectMessages(EnhancementOperation op, Location location)
{
Defense.notNull(op, "op");
@@ -75,7 +78,7 @@
builder.addln("return _$messages;");
builder.end();
- op.addMethod(Modifier.PUBLIC, METHOD_SIGNATURE, builder.toString());
+ op.addMethod(Modifier.PUBLIC, METHOD_SIGNATURE, builder.toString(), location);
}
public void setComponentMessagesSource(ComponentMessagesSource componentMessagesSource)
1.5 +5 -2 jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestInjectObjectAnnotationWorker.java
Index: TestInjectObjectAnnotationWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestInjectObjectAnnotationWorker.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- TestInjectObjectAnnotationWorker.java 2 Jul 2005 22:51:24 -0000 1.4
+++ TestInjectObjectAnnotationWorker.java 27 Jul 2005 22:24:48 -0000 1.5
@@ -16,6 +16,7 @@
import java.lang.reflect.Method;
+import org.apache.hivemind.Location;
import org.apache.tapestry.enhance.EnhancementOperation;
import org.apache.tapestry.enhance.InjectObjectWorker;
import org.apache.tapestry.services.InjectedValueProvider;
@@ -40,6 +41,8 @@
public void testDelegation()
{
+ Location l = newLocation();
+
EnhancementOperation op = newOp();
IComponentSpecification spec = newSpec();
@@ -58,11 +61,11 @@
Method m = findMethod(AnnotatedPage.class, "getInjectedObject");
- delegate.injectObject(op, "barney", "injectedObject", null);
+ delegate.injectObject(op, "barney", "injectedObject", l);
replayControls();
- worker.performEnhancement(op, spec, m, null);
+ worker.performEnhancement(op, spec, m, l);
verifyControls();
}
1.4 +4 -2 jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestInjectComponentAnnotationWorker.java
Index: TestInjectComponentAnnotationWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestInjectComponentAnnotationWorker.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TestInjectComponentAnnotationWorker.java 2 Jul 2005 22:51:24 -0000 1.3
+++ TestInjectComponentAnnotationWorker.java 27 Jul 2005 22:24:48 -0000 1.4
@@ -14,6 +14,7 @@
package org.apache.tapestry.annotations;
+import org.apache.hivemind.Location;
import org.apache.tapestry.enhance.EnhancementOperation;
import org.apache.tapestry.enhance.InjectComponentWorker;
import org.apache.tapestry.spec.IComponentSpecification;
@@ -36,18 +37,19 @@
public void testDelegation()
{
+ Location l = newLocation();
EnhancementOperation op = newOp();
IComponentSpecification spec = newSpec();
InjectComponentWorker delegate = (InjectComponentWorker) newMock(InjectComponentWorker.class);
- delegate.injectComponent(op, "fred", "fredField");
+ delegate.injectComponent(op, "fred", "fredField", l);
replayControls();
InjectComponentAnnotationWorker worker = new InjectComponentAnnotationWorker(delegate);
- worker.performEnhancement(op, spec, findMethod(AnnotatedPage.class, "getFredField"), null);
+ worker.performEnhancement(op, spec, findMethod(AnnotatedPage.class, "getFredField"), l);
verifyControls();
}
1.4 +5 -2 jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestInjectStateAnnotationWorker.java
Index: TestInjectStateAnnotationWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestInjectStateAnnotationWorker.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TestInjectStateAnnotationWorker.java 2 Jul 2005 22:51:24 -0000 1.3
+++ TestInjectStateAnnotationWorker.java 27 Jul 2005 22:24:48 -0000 1.4
@@ -14,6 +14,7 @@
package org.apache.tapestry.annotations;
+import org.apache.hivemind.Location;
import org.apache.tapestry.engine.state.ApplicationStateManager;
import org.apache.tapestry.enhance.EnhancementOperation;
import org.apache.tapestry.enhance.InjectStateWorker;
@@ -37,18 +38,20 @@
public void testDelegation()
{
+ Location l = newLocation();
+
EnhancementOperation op = newOp();
IComponentSpecification spec = newSpec();
InjectStateWorker delegate = (InjectStateWorker) newMock(InjectStateWorker.class);
- delegate.injectState(op, "barneyASO", "barney");
+ delegate.injectState(op, "barneyASO", "barney", l);
replayControls();
InjectStateAnnotationWorker worker = new InjectStateAnnotationWorker(delegate);
- worker.performEnhancement(op, spec, findMethod(AnnotatedPage.class, "getBarney"), null);
+ worker.performEnhancement(op, spec, findMethod(AnnotatedPage.class, "getBarney"), l);
verifyControls();
}
1.4 +12 -6 jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestMessageAnnotationWorker.java
Index: TestMessageAnnotationWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestMessageAnnotationWorker.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TestMessageAnnotationWorker.java 8 Jul 2005 05:53:39 -0000 1.3
+++ TestMessageAnnotationWorker.java 27 Jul 2005 22:24:48 -0000 1.4
@@ -18,6 +18,7 @@
import java.lang.reflect.Modifier;
import org.apache.hivemind.ApplicationRuntimeException;
+import org.apache.hivemind.Location;
import org.apache.hivemind.Messages;
import org.apache.hivemind.impl.DefaultClassResolver;
import org.apache.hivemind.service.MethodSignature;
@@ -98,6 +99,7 @@
public void testSetterIsClaimed()
{
+ Location l = newLocation();
EnhancementOperation op = newOp();
IComponentSpecification spec = newSpec();
@@ -106,45 +108,49 @@
op.addMethod(
Modifier.PUBLIC,
new MethodSignature(method),
- "{\n return getMessages().getMessage(\"like-getter\");\n}\n");
+ "{\n return getMessages().getMessage(\"like-getter\");\n}\n",
+ l);
op.claimProperty("likeGetter");
replayControls();
- new MessageAnnotationWorker().performEnhancement(op, spec, method, null);
+ new MessageAnnotationWorker().performEnhancement(op, spec, method, l);
verifyControls();
}
private void attempt(String methodName, String codeBlock)
{
+ Location l = newLocation();
EnhancementOperation op = newOp();
IComponentSpecification spec = newSpec();
Method method = findMethod(AnnotatedPage.class, methodName);
- op.addMethod(Modifier.PUBLIC, new MethodSignature(method), codeBlock);
+ op.addMethod(Modifier.PUBLIC, new MethodSignature(method), codeBlock, l);
replayControls();
- new MessageAnnotationWorker().performEnhancement(op, spec, method, null);
+ new MessageAnnotationWorker().performEnhancement(op, spec, method, l);
verifyControls();
}
private Object construct(Class baseClass, String methodName, Messages messages)
{
+ Location l = newLocation();
+
ComponentSpecification spec = new ComponentSpecification();
EnhancementOperationImpl op = new EnhancementOperationImpl(getClassResolver(), spec,
baseClass, new ClassFactoryImpl());
op.addInjectedField("_messages", Messages.class, messages);
- EnhanceUtils.createSimpleAccessor(op, "_messages", "messages", Messages.class);
+ EnhanceUtils.createSimpleAccessor(op, "_messages", "messages", Messages.class, l);
Method method = findMethod(baseClass, methodName);
- new MessageAnnotationWorker().performEnhancement(op, spec, method, null);
+ new MessageAnnotationWorker().performEnhancement(op, spec, method, l);
ComponentConstructor cc = op.getConstructor();
1.4 +5 -2 jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestInjectAssetAnnotationWorker.java
Index: TestInjectAssetAnnotationWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestInjectAssetAnnotationWorker.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TestInjectAssetAnnotationWorker.java 2 Jul 2005 22:51:24 -0000 1.3
+++ TestInjectAssetAnnotationWorker.java 27 Jul 2005 22:24:48 -0000 1.4
@@ -16,6 +16,7 @@
import java.lang.reflect.Method;
+import org.apache.hivemind.Location;
import org.apache.tapestry.enhance.EnhancementOperation;
import org.apache.tapestry.enhance.InjectAssetWorker;
import org.apache.tapestry.spec.IComponentSpecification;
@@ -37,6 +38,8 @@
public void testDelegation()
{
+ Location l = newLocation();
+
EnhancementOperation op = newOp();
IComponentSpecification spec = newSpec();
@@ -44,13 +47,13 @@
Method m = findMethod(AnnotatedPage.class, "getStylesheetAsset");
- delegate.injectAsset(op, "stylesheet", "stylesheetAsset");
+ delegate.injectAsset(op, "stylesheet", "stylesheetAsset", l);
replayControls();
InjectAssetAnnotationWorker worker = new InjectAssetAnnotationWorker(delegate);
- worker.performEnhancement(op, spec, m, null);
+ worker.performEnhancement(op, spec, m, l);
verifyControls();
}
1.14 +17 -7 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestSpecifiedPropertyWorker.java
Index: TestSpecifiedPropertyWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestSpecifiedPropertyWorker.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- TestSpecifiedPropertyWorker.java 8 Jul 2005 14:45:13 -0000 1.13
+++ TestSpecifiedPropertyWorker.java 27 Jul 2005 22:24:49 -0000 1.14
@@ -99,7 +99,14 @@
public void testAddNormal() throws Exception
{
- IComponentSpecification spec = buildComponentSpecification("fred", "boolean", false);
+ Location l = newLocation();
+
+ IComponentSpecification spec = buildComponentSpecification(buildPropertySpecs(
+ "fred",
+ "boolean",
+ false,
+ l,
+ null));
// Training
@@ -119,10 +126,11 @@
op.addMethod(
Modifier.PUBLIC,
new MethodSignature(boolean.class, "isFred", null, null),
- "return _$fred;");
+ "return _$fred;",
+ l);
op.addMethod(Modifier.PUBLIC, new MethodSignature(void.class, "setFred", new Class[]
- { boolean.class }, null), "{\n _$fred = $1;\n}\n");
+ { boolean.class }, null), "{\n _$fred = $1;\n}\n", l);
op.addField("_$fred$default", boolean.class);
@@ -178,10 +186,11 @@
op.addMethod(
Modifier.PUBLIC,
new MethodSignature(List.class, "getFred", null, null),
- "return _$fred;");
+ "return _$fred;",
+ l);
op.addMethod(Modifier.PUBLIC, new MethodSignature(void.class, "setFred", new Class[]
- { List.class }, null), "{\n _$fred = $1;\n}\n");
+ { List.class }, null), "{\n _$fred = $1;\n}\n", l);
op.addInjectedField(
"_$fred$initialValueBindingCreator",
@@ -241,7 +250,8 @@
op.addMethod(
Modifier.PUBLIC,
new MethodSignature(String.class, "getBarney", null, null),
- "return _$barney;");
+ "return _$barney;",
+ null);
BodyBuilder b = new BodyBuilder();
b.begin();
@@ -250,7 +260,7 @@
b.end();
op.addMethod(Modifier.PUBLIC, new MethodSignature(void.class, "setBarney", new Class[]
- { String.class }, null), b.toString());
+ { String.class }, null), b.toString(), null);
op.addField("_$barney$default", String.class);
1.4 +12 -7 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectMetaWorker.java
Index: TestInjectMetaWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectMetaWorker.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TestInjectMetaWorker.java 7 Jun 2005 17:41:40 -0000 1.3
+++ TestInjectMetaWorker.java 27 Jul 2005 22:24:49 -0000 1.4
@@ -16,6 +16,7 @@
import java.lang.reflect.Modifier;
+import org.apache.hivemind.Location;
import org.apache.hivemind.service.BodyBuilder;
import org.apache.hivemind.service.MethodSignature;
import org.apache.hivemind.test.HiveMindTestCase;
@@ -33,12 +34,13 @@
*/
public class TestInjectMetaWorker extends HiveMindTestCase
{
- private InjectSpecification newSpec(String propertyName, String object)
+ private InjectSpecification newSpec(String propertyName, String object, Location location)
{
InjectSpecificationImpl result = new InjectSpecificationImpl();
result.setProperty(propertyName);
result.setObject(object);
+ result.setLocation(location);
return result;
}
@@ -50,7 +52,8 @@
public void testPrimitive()
{
- InjectSpecification spec = newSpec("fooBar", "foo.bar");
+ Location l = newLocation();
+ InjectSpecification spec = newSpec("fooBar", "foo.bar", l);
ComponentPropertySource source = newSource();
@@ -76,7 +79,7 @@
builder.addln("return java.lang.Integer.parseInt(meta);");
builder.end();
- op.addMethod(Modifier.PUBLIC, sig, builder.toString());
+ op.addMethod(Modifier.PUBLIC, sig, builder.toString(), l);
replayControls();
@@ -91,7 +94,8 @@
public void testCharacter()
{
- InjectSpecification spec = newSpec("fooBar", "foo.bar");
+ Location l = newLocation();
+ InjectSpecification spec = newSpec("fooBar", "foo.bar", l);
ComponentPropertySource source = newSource();
@@ -117,7 +121,7 @@
builder.addln("return meta.charAt(0);");
builder.end();
- op.addMethod(Modifier.PUBLIC, sig, builder.toString());
+ op.addMethod(Modifier.PUBLIC, sig, builder.toString(), l);
replayControls();
@@ -132,7 +136,8 @@
public void testObject()
{
- InjectSpecification spec = newSpec("fooBar", "foo.bar");
+ Location l = newLocation();
+ InjectSpecification spec = newSpec("fooBar", "foo.bar", l);
ComponentPropertySource source = newSource();
ValueConverter converter = (ValueConverter) newMock(ValueConverter.class);
@@ -165,7 +170,7 @@
builder.addln("return (java.lang.Object) vc.coerceValue(meta, _$Object);");
builder.end();
- op.addMethod(Modifier.PUBLIC, sig, builder.toString());
+ op.addMethod(Modifier.PUBLIC, sig, builder.toString(), l);
replayControls();
1.3 +4 -3 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectComponentWorker.java
Index: TestInjectComponentWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectComponentWorker.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestInjectComponentWorker.java 18 Apr 2005 17:07:50 -0000 1.2
+++ TestInjectComponentWorker.java 27 Jul 2005 22:24:49 -0000 1.3
@@ -70,7 +70,8 @@
public void testSuccess()
{
- IComponentSpecification spec = newSpec("fred", "barney", null);
+ Location l = newLocation();
+ IComponentSpecification spec = newSpec("fred", "barney", l);
MockControl control = newControl(EnhancementOperation.class);
EnhancementOperation op = (EnhancementOperation) control.getMock();
@@ -87,7 +88,7 @@
op.addMethod(
Modifier.PUBLIC,
new MethodSignature(IComponent.class, "getBarney", null, null),
- "return _$barney;");
+ "return _$barney;", l);
op.extendMethodImplementation(
IComponent.class,
@@ -103,7 +104,7 @@
public void testFailure()
{
- Location l = fabricateLocation(99);
+ Location l = newLocation();
Throwable ex = new ApplicationRuntimeException(EnhanceMessages.claimedProperty("barney"));
MockControl control = newControl(EnhancementOperation.class);
1.6 +8 -13 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectMessagesWorker.java
Index: TestInjectMessagesWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectMessagesWorker.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- TestInjectMessagesWorker.java 7 Jun 2005 17:41:40 -0000 1.5
+++ TestInjectMessagesWorker.java 27 Jul 2005 22:24:49 -0000 1.6
@@ -18,9 +18,9 @@
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.ErrorLog;
+import org.apache.hivemind.Location;
import org.apache.hivemind.Messages;
import org.apache.hivemind.service.BodyBuilder;
-import org.apache.hivemind.test.HiveMindTestCase;
import org.apache.tapestry.BaseComponent;
import org.apache.tapestry.services.ComponentMessagesSource;
import org.apache.tapestry.spec.IComponentSpecification;
@@ -32,13 +32,8 @@
* @author Howard M. Lewis Ship
* @since 4.0
*/
-public class TestInjectMessagesWorker extends HiveMindTestCase
+public class TestInjectMessagesWorker extends BaseEnhancementTestCase
{
- private IComponentSpecification newSpec()
- {
- return (IComponentSpecification) newMock(IComponentSpecification.class);
- }
-
private ComponentMessagesSource newSource()
{
return (ComponentMessagesSource) newMock(ComponentMessagesSource.class);
@@ -46,10 +41,10 @@
public void testSuccess()
{
-
+ Location l = newLocation();
InjectMessagesWorker w = new InjectMessagesWorker();
- IComponentSpecification spec = newSpec();
+ IComponentSpecification spec = newSpec(l);
ComponentMessagesSource source = newSource();
MockControl control = newControl(EnhancementOperation.class);
@@ -67,7 +62,7 @@
builder.end();
op.addField("_$messages", Messages.class);
- op.addMethod(Modifier.PUBLIC, w.METHOD_SIGNATURE, builder.toString());
+ op.addMethod(Modifier.PUBLIC, w.METHOD_SIGNATURE, builder.toString(), l);
replayControls();
@@ -80,13 +75,13 @@
public void testFailure()
{
-
+ Location l = newLocation();
InjectMessagesWorker w = new InjectMessagesWorker();
Throwable ex = new ApplicationRuntimeException(EnhanceMessages
.claimedProperty(w.MESSAGES_PROPERTY));
- IComponentSpecification spec = newSpec();
+ IComponentSpecification spec = newSpec(l);
MockControl control = newControl(EnhancementOperation.class);
EnhancementOperation op = (EnhancementOperation) control.getMock();
@@ -101,7 +96,7 @@
log.error(
EnhanceMessages.errorAddingProperty(w.MESSAGES_PROPERTY, BaseComponent.class, ex),
- null,
+ l,
ex);
replayControls();
1.2 +21 -12 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectPageWorker.java
Index: TestInjectPageWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectPageWorker.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestInjectPageWorker.java 19 Jun 2005 16:06:29 -0000 1.1
+++ TestInjectPageWorker.java 27 Jul 2005 22:24:49 -0000 1.2
@@ -45,10 +45,7 @@
replayControls();
- InjectSpecification is = new InjectSpecificationImpl();
- is.setProperty("somePage");
- is.setObject("SomePage");
- is.setLocation(l);
+ InjectSpecification is = newSpec(l);
try
{
@@ -66,12 +63,24 @@
verifyControls();
}
+ private InjectSpecification newSpec(Location l)
+ {
+ InjectSpecification is = new InjectSpecificationImpl();
+ is.setProperty("somePage");
+ is.setObject("SomePage");
+ is.setLocation(l);
+
+ return is;
+ }
+
/**
* Test for when there's no existing property.
*/
public void testNoPropertyType()
{
+ Location l = newLocation();
+
MockControl opc = newControl(EnhancementOperation.class);
EnhancementOperation op = (EnhancementOperation) opc.getMock();
@@ -88,13 +97,12 @@
op.addMethod(
Modifier.PUBLIC,
sig,
- "return getPage().getRequestCycle().getPage(\"SomePage\");");
+ "return getPage().getRequestCycle().getPage(\"SomePage\");",
+ l);
replayControls();
- InjectSpecification is = new InjectSpecificationImpl();
- is.setProperty("somePage");
- is.setObject("SomePage");
+ InjectSpecification is = newSpec(l);
new InjectPageWorker().performEnhancement(op, is);
@@ -103,6 +111,8 @@
public void testExistingPropertyType()
{
+ Location l = newLocation();
+
MockControl opc = newControl(EnhancementOperation.class);
EnhancementOperation op = (EnhancementOperation) opc.getMock();
@@ -123,13 +133,12 @@
.addMethod(
Modifier.PUBLIC,
sig,
- "return (org.apache.tapestry.html.BasePage)getPage().getRequestCycle().getPage(\"SomePage\");");
+ "return (org.apache.tapestry.html.BasePage)getPage().getRequestCycle().getPage(\"SomePage\");",
+ l);
replayControls();
- InjectSpecification is = new InjectSpecificationImpl();
- is.setProperty("somePage");
- is.setObject("SomePage");
+ InjectSpecification is = newSpec(l);
new InjectPageWorker().performEnhancement(op, is);
1.6 +6 -8 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectSpecificationWorker.java
Index: TestInjectSpecificationWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectSpecificationWorker.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- TestInjectSpecificationWorker.java 7 Jun 2005 17:41:40 -0000 1.5
+++ TestInjectSpecificationWorker.java 27 Jul 2005 22:24:49 -0000 1.6
@@ -31,19 +31,17 @@
* @author Howard M. Lewis Ship
* @since 4.0
*/
-public class TestInjectSpecificationWorker extends HiveMindTestCase
+public class TestInjectSpecificationWorker extends BaseEnhancementTestCase
{
- private IComponentSpecification newSpec()
- {
- return (IComponentSpecification) newMock(IComponentSpecification.class);
- }
public void testSuccess() throws Exception
{
+ Location l = newLocation();
+
MockControl control = newControl(EnhancementOperation.class);
EnhancementOperation op = (EnhancementOperation) control.getMock();
- IComponentSpecification spec = newSpec();
+ IComponentSpecification spec = newSpec(l);
op.claimProperty("specification");
@@ -54,7 +52,7 @@
control.setReturnValue("getSpecification");
op.addMethod(Modifier.PUBLIC, new MethodSignature(IComponentSpecification.class,
- "getSpecification", null, null), "return _$specification;");
+ "getSpecification", null, null), "return _$specification;", l);
replayControls();
@@ -65,7 +63,7 @@
public void testFailure()
{
- Location l = fabricateLocation(11);
+ Location l = newLocation();
MockControl control = newControl(EnhancementOperation.class);
EnhancementOperation op = (EnhancementOperation) control.getMock();
1.7 +4 -3 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectStateWorker.java
Index: TestInjectStateWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectStateWorker.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- TestInjectStateWorker.java 7 Jun 2005 17:41:40 -0000 1.6
+++ TestInjectStateWorker.java 27 Jul 2005 22:24:49 -0000 1.7
@@ -53,7 +53,8 @@
public void testSuccess()
{
- InjectSpecification spec = newSpec("fred", "barney", null);
+ Location l = newLocation();
+ InjectSpecification spec = newSpec("fred", "barney", l);
MockControl opc = newControl(EnhancementOperation.class);
EnhancementOperation op = (EnhancementOperation) opc.getMock();
@@ -83,7 +84,7 @@
MethodSignature sig = new MethodSignature(Map.class, "getFred", null, null);
- op.addMethod(Modifier.PUBLIC, sig, builder.toString());
+ op.addMethod(Modifier.PUBLIC, sig, builder.toString(), l);
builder.clear();
builder.begin();
@@ -94,7 +95,7 @@
sig = new MethodSignature(void.class, "setFred", new Class[]
{ Map.class }, null);
- op.addMethod(Modifier.PUBLIC, sig, builder.toString());
+ op.addMethod(Modifier.PUBLIC, sig, builder.toString(), l);
op.extendMethodImplementation(
PageDetachListener.class,
EnhanceUtils.PAGE_DETACHED_SIGNATURE,
1.6 +10 -4 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestAbstractPropertyWorker.java
Index: TestAbstractPropertyWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestAbstractPropertyWorker.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- TestAbstractPropertyWorker.java 18 Apr 2005 17:07:50 -0000 1.5
+++ TestAbstractPropertyWorker.java 27 Jul 2005 22:24:49 -0000 1.6
@@ -34,10 +34,15 @@
* @author Howard M. Lewis Ship
* @since 4.0
*/
-public class TestAbstractPropertyWorker extends HiveMindTestCase
+public class TestAbstractPropertyWorker extends BaseEnhancementTestCase
{
+
public void testSuccess()
{
+ Location l = newLocation();
+
+ IComponentSpecification spec = newSpec(l);
+
MockControl opc = newControl(EnhancementOperation.class);
EnhancementOperation op = (EnhancementOperation) opc.getMock();
@@ -56,10 +61,11 @@
op.addMethod(
Modifier.PUBLIC,
new MethodSignature(String.class, "getFred", null, null),
- "return _$fred;");
+ "return _$fred;",
+ l);
op.addMethod(Modifier.PUBLIC, new MethodSignature(void.class, "setFred", new Class[]
- { String.class }, null), "_$fred = $1;");
+ { String.class }, null), "_$fred = $1;", l);
op.extendMethodImplementation(
IComponent.class,
@@ -75,7 +81,7 @@
replayControls();
- new AbstractPropertyWorker().performEnhancement(op, null);
+ new AbstractPropertyWorker().performEnhancement(op, spec);
verifyControls();
}
1.19 +53 -2 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestEnhancementOperation.java
Index: TestEnhancementOperation.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestEnhancementOperation.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- TestEnhancementOperation.java 8 Jul 2005 14:45:13 -0000 1.18
+++ TestEnhancementOperation.java 27 Jul 2005 22:24:49 -0000 1.19
@@ -436,6 +436,8 @@
public void testAddMethod()
{
+ Location l = newLocation();
+
Class baseClass = Insert.class;
MethodSignature sig = new MethodSignature(void.class, "frob", null, null);
@@ -461,7 +463,56 @@
EnhancementOperation eo = new EnhancementOperationImpl(new DefaultClassResolver(), spec,
baseClass, cf);
- eo.addMethod(Modifier.PUBLIC, sig, "method body");
+ eo.addMethod(Modifier.PUBLIC, sig, "method body", l);
+
+ verifyControls();
+ }
+
+ public void testAddMethodDuplicate()
+ {
+ Location firstLocation = newLocation();
+ Location secondLocation = newLocation();
+
+ Class baseClass = Insert.class;
+ MethodSignature sig = new MethodSignature(void.class, "frob", null, null);
+
+ IComponentSpecification spec = newSpec();
+
+ MockControl cfc = newControl(ClassFactory.class);
+ ClassFactory cf = (ClassFactory) cfc.getMock();
+
+ MockControl fabc = newControl(ClassFab.class);
+ ClassFab fab = (ClassFab) fabc.getMock();
+
+ // We force the uid to 97 in setUp()
+
+ cf.newClass("$Insert_97", baseClass);
+
+ cfc.setReturnValue(fab);
+
+ fab.addMethod(Modifier.PUBLIC, sig, "method body");
+ fabc.setReturnValue(null);
+
+ replayControls();
+
+ EnhancementOperation eo = new EnhancementOperationImpl(new DefaultClassResolver(), spec,
+ baseClass, cf);
+
+ eo.addMethod(Modifier.PUBLIC, sig, "method body", firstLocation);
+
+ try
+ {
+ eo.addMethod(Modifier.PUBLIC, sig, "second method body", secondLocation);
+ unreachable();
+ }
+ catch (ApplicationRuntimeException ex)
+ {
+ assertEquals(
+ "A new implementation of method 'void frob()' conflicts with an existing "
+ + "implementation (at classpath:/org/apache/tapestry/enhance/TestEnhancementOperation, line 1).",
+ ex.getMessage());
+ assertSame(secondLocation, ex.getLocation());
+ }
verifyControls();
}
@@ -511,7 +562,7 @@
String ref2 = eo.getClassReference(Map.class);
eo.addMethod(Modifier.PUBLIC, new MethodSignature(Class.class, "getClassReference", null,
- null), "return " + ref + ";");
+ null), "return " + ref + ";", l);
ComponentConstructor cc = eo.getConstructor();
1.13 +22 -10 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestParameterPropertyWorker.java
Index: TestParameterPropertyWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestParameterPropertyWorker.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- TestParameterPropertyWorker.java 21 Jul 2005 13:17:57 -0000 1.12
+++ TestParameterPropertyWorker.java 27 Jul 2005 22:24:49 -0000 1.13
@@ -176,7 +176,8 @@
op.addMethod(
Modifier.PUBLIC,
new MethodSignature(String.class, "getFred", null, null),
- builder.toString());
+ builder.toString(),
+ null);
builder.clear();
@@ -203,7 +204,7 @@
builder.end();
op.addMethod(Modifier.PUBLIC, new MethodSignature(void.class, "setFred", new Class[]
- { String.class }, null), builder.toString());
+ { String.class }, null), builder.toString(), null);
BodyBuilder expectedCleanup = new BodyBuilder();
@@ -235,11 +236,12 @@
public void testDifferentPropertyName()
{
+ Location l = newLocation();
IComponentSpecification spec = buildComponentSpecification("myparam", buildParameterSpec(
"myparam",
"fred",
null,
- null));
+ l));
MockControl opc = newControl(EnhancementOperation.class);
EnhancementOperation op = (EnhancementOperation) opc.getMock();
@@ -277,7 +279,8 @@
op.addMethod(
Modifier.PUBLIC,
new MethodSignature(String.class, "getFred", null, null),
- builder.toString());
+ builder.toString(),
+ l);
builder.clear();
@@ -304,11 +307,12 @@
builder.end();
op.addMethod(Modifier.PUBLIC, new MethodSignature(void.class, "setFred", new Class[]
- { String.class }, null), builder.toString());
+ { String.class }, null), builder.toString(), l);
BodyBuilder expectedCleanup = new BodyBuilder();
- expectedCleanup.addln("org.apache.tapestry.IBinding fredBinding = getBinding(\"myparam\");");
+ expectedCleanup
+ .addln("org.apache.tapestry.IBinding fredBinding = getBinding(\"myparam\");");
expectedCleanup.addln("if (_$fred$Cached && ! fredBinding.isInvariant())");
expectedCleanup.begin();
expectedCleanup.addln("_$fred$Cached = false;");
@@ -331,6 +335,8 @@
public void testPrimitiveType()
{
+ Location l = newLocation();
+
MockControl opc = newControl(EnhancementOperation.class);
EnhancementOperation op = (EnhancementOperation) opc.getMock();
@@ -355,7 +361,8 @@
op.addMethod(
Modifier.PUBLIC,
new MethodSignature(boolean.class, "isFred", null, null),
- builder.toString());
+ builder.toString(),
+ l);
replayControls();
@@ -367,13 +374,16 @@
"_$fred",
"_$fred$Default",
"_$fred$Cached",
- true);
+ true,
+ l);
verifyControls();
}
public void testParameterCacheDisabled()
{
+ Location l = newLocation();
+
MockControl opc = newControl(EnhancementOperation.class);
EnhancementOperation op = (EnhancementOperation) opc.getMock();
@@ -398,7 +408,8 @@
op.addMethod(
Modifier.PUBLIC,
new MethodSignature(boolean.class, "isFred", null, null),
- builder.toString());
+ builder.toString(),
+ l);
replayControls();
@@ -410,7 +421,8 @@
"_$fred",
"_$fred$Default",
"_$fred$Cached",
- false);
+ false,
+ l);
verifyControls();
}
1.4 +6 -4 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectBeanWorker.java
Index: TestInjectBeanWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectBeanWorker.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TestInjectBeanWorker.java 18 Apr 2005 17:07:50 -0000 1.3
+++ TestInjectBeanWorker.java 27 Jul 2005 22:24:49 -0000 1.4
@@ -69,7 +69,8 @@
public void testSuccess()
{
- IComponentSpecification spec = newSpec("fred", "barney", null);
+ Location l = newLocation();
+ IComponentSpecification spec = newSpec("fred", "barney", l);
MockControl control = newControl(EnhancementOperation.class);
EnhancementOperation op = (EnhancementOperation) control.getMock();
@@ -84,12 +85,13 @@
op.addMethod(
Modifier.PUBLIC,
new MethodSignature(ArrayList.class, "getBarney", null, null),
- "return (java.util.ArrayList) getBeans().getBean(\"fred\");");
+ "return (java.util.ArrayList) getBeans().getBean(\"fred\");",
+ l);
replayControls();
-
+
new InjectBeanWorker().performEnhancement(op, spec);
-
+
verifyControls();
}
1.5 +2 -2 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectScriptWorker.java
Index: TestInjectScriptWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectScriptWorker.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- TestInjectScriptWorker.java 16 Jun 2005 12:03:18 -0000 1.4
+++ TestInjectScriptWorker.java 27 Jul 2005 22:24:49 -0000 1.5
@@ -40,7 +40,7 @@
MockControl opc = newControl(EnhancementOperation.class);
EnhancementOperation op = (EnhancementOperation) opc.getMock();
- Location componentSpecLocation = fabricateLocation(22);
+ Location componentSpecLocation = newLocation();
final Resource scriptResource = componentSpecLocation.getResource().getRelativeResource(
"bar.script");
@@ -77,7 +77,7 @@
MethodSignature sig = new MethodSignature(IScript.class, "getFoo", null, null);
- op.addMethod(Modifier.PUBLIC, sig, "return _script.getScript();");
+ op.addMethod(Modifier.PUBLIC, sig, "return _script.getScript();", injectSpecLocation);
replayControls();
1.5 +4 -3 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectObjectWorker.java
Index: TestInjectObjectWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectObjectWorker.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- TestInjectObjectWorker.java 9 Jul 2005 16:40:31 -0000 1.4
+++ TestInjectObjectWorker.java 27 Jul 2005 22:24:49 -0000 1.5
@@ -71,14 +71,15 @@
// When the same bean is injected multiple times, the field name
// returned won't match the field name suggested; make sure the code
// generation used the correct field name.
-
+
op.addInjectedField("_$fred", Object.class, injectedValue);
opc.setReturnValue("_$gnarly");
op.addMethod(
Modifier.PUBLIC,
new MethodSignature(Object.class, "getFred", null, null),
- "return _$gnarly;");
+ "return _$gnarly;",
+ l);
replayControls();
@@ -115,7 +116,7 @@
opc.setReturnValue("_$wilma");
op.addMethod(Modifier.PUBLIC, new MethodSignature(IEngineService.class, "getWilma", null,
- null), "return _$wilma;");
+ null), "return _$wilma;", l);
replayControls();
1.4 +9 -5 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectAssetWorker.java
Index: TestInjectAssetWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectAssetWorker.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TestInjectAssetWorker.java 8 Jul 2005 14:45:13 -0000 1.3
+++ TestInjectAssetWorker.java 27 Jul 2005 22:24:49 -0000 1.4
@@ -70,7 +70,8 @@
public void testSuccess()
{
- IComponentSpecification spec = newSpec("fred", "barney", null);
+ Location l = newLocation();
+ IComponentSpecification spec = newSpec("fred", "barney", l);
MockControl control = newControl(EnhancementOperation.class);
EnhancementOperation op = (EnhancementOperation) control.getMock();
@@ -87,7 +88,8 @@
op.addMethod(
Modifier.PUBLIC,
new MethodSignature(IAsset.class, "getBarney", null, null),
- "return _$barney;");
+ "return _$barney;",
+ l);
op.extendMethodImplementation(
IComponent.class,
@@ -103,7 +105,7 @@
public void testFailure()
{
- Location l = fabricateLocation(99);
+ Location l = newLocation();
Throwable ex = new ApplicationRuntimeException(EnhanceMessages.claimedProperty("barney"));
MockControl control = newControl(EnhancementOperation.class);
@@ -150,12 +152,14 @@
InjectAssetWorker w = new InjectAssetWorker();
try
{
- w.injectAsset(op, "fred", "barney");
+ w.injectAsset(op, "fred", "barney", null);
unreachable();
}
catch (ApplicationRuntimeException ex)
{
- assertEquals("Property barney is type org.apache.tapestry.IComponent, which is not compatible with the expected type, org.apache.tapestry.IAsset.", ex.getMessage());
+ assertEquals(
+ "Property barney is type org.apache.tapestry.IComponent, which is not compatible with the expected type, org.apache.tapestry.IAsset.",
+ ex.getMessage());
}
verifyControls();
1.1 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/BaseEnhancementTestCase.java
Index: BaseEnhancementTestCase.java
===================================================================
package org.apache.tapestry.enhance;
import org.apache.hivemind.Location;
import org.apache.hivemind.test.HiveMindTestCase;
import org.apache.tapestry.spec.IComponentSpecification;
import org.easymock.MockControl;
/**
* Base class for common utilities when testing enhancement workers.
*
* @author Howard Lewis Ship
* @since 4.0
*/
public abstract class BaseEnhancementTestCase extends HiveMindTestCase
{
public IComponentSpecification newSpec(Location location)
{
MockControl control = newControl(IComponentSpecification.class);
IComponentSpecification spec = (IComponentSpecification) control.getMock();
spec.getLocation();
control.setReturnValue(location);
return spec;
}
protected IComponentSpecification newSpec()
{
return (IComponentSpecification) newMock(IComponentSpecification.class);
}
}
1.3 +8 -4 jakarta-tapestry/framework/src/java/org/apache/tapestry/test/CreatePropertyWorker.java
Index: CreatePropertyWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/test/CreatePropertyWorker.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- CreatePropertyWorker.java 18 Apr 2005 17:06:43 -0000 1.2
+++ CreatePropertyWorker.java 27 Jul 2005 22:24:49 -0000 1.3
@@ -14,6 +14,7 @@
package org.apache.tapestry.test;
+import org.apache.hivemind.Location;
import org.apache.tapestry.enhance.EnhanceUtils;
import org.apache.tapestry.enhance.EnhancementOperation;
import org.apache.tapestry.enhance.EnhancementWorker;
@@ -28,11 +29,14 @@
*/
public class CreatePropertyWorker implements EnhancementWorker
{
- private String _propertyName;
+ private final String _propertyName;
- public CreatePropertyWorker(String propertyName)
+ private final Location _location;
+
+ public CreatePropertyWorker(String propertyName, Location location)
{
_propertyName = propertyName;
+ _location = location;
}
public void performEnhancement(EnhancementOperation op, IComponentSpecification spec)
@@ -45,8 +49,8 @@
op.addField(field, propertyType);
- EnhanceUtils.createSimpleAccessor(op, field, _propertyName, propertyType);
+ EnhanceUtils.createSimpleAccessor(op, field, _propertyName, propertyType, _location);
- EnhanceUtils.createSimpleMutator(op, field, _propertyName, propertyType);
+ EnhanceUtils.createSimpleMutator(op, field, _propertyName, propertyType, _location);
}
}
\ No newline at end of file
1.11 +10 -3 jakarta-tapestry/framework/src/java/org/apache/tapestry/test/Creator.java
Index: Creator.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/test/Creator.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- Creator.java 18 Apr 2005 17:06:43 -0000 1.10
+++ Creator.java 27 Jul 2005 22:24:49 -0000 1.11
@@ -24,6 +24,7 @@
import org.apache.commons.logging.LogFactory;
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.ClassResolver;
+import org.apache.hivemind.Location;
import org.apache.hivemind.impl.DefaultClassResolver;
import org.apache.hivemind.service.ClassFactory;
import org.apache.hivemind.service.impl.ClassFactoryImpl;
@@ -34,6 +35,7 @@
import org.apache.tapestry.enhance.EnhancementWorker;
import org.apache.tapestry.services.ComponentConstructor;
import org.apache.tapestry.spec.ComponentSpecification;
+import org.apache.tapestry.spec.IComponentSpecification;
/**
* A utility class that is used to instantiate abstract Tapestry pages and components. It creates,
@@ -68,11 +70,13 @@
private List _workers = new ArrayList();
{
+ Location location = new CreatorLocation();
+
// Overrride AbstractComponent's implementations of
// these two properties (making them read/write).
- _workers.add(new CreatePropertyWorker("messages"));
- _workers.add(new CreatePropertyWorker("specification"));
+ _workers.add(new CreatePropertyWorker("messages", location));
+ _workers.add(new CreatePropertyWorker("specification", location));
// Implement any abstract properties.
// Note that we don't bother setting the errorLog property
@@ -89,12 +93,15 @@
EnhancementOperationImpl op = new EnhancementOperationImpl(_classResolver,
new ComponentSpecification(), inputClass, _classFactory);
+ IComponentSpecification spec = new ComponentSpecification();
+ spec.setLocation(new CreatorLocation());
+
Iterator i = _workers.iterator();
while (i.hasNext())
{
EnhancementWorker worker = (EnhancementWorker) i.next();
- worker.performEnhancement(op, null);
+ worker.performEnhancement(op, spec);
}
return op.getConstructor();
1.1 jakarta-tapestry/framework/src/java/org/apache/tapestry/test/CreatorLocation.java
Index: CreatorLocation.java
===================================================================
package org.apache.tapestry.test;
import org.apache.hivemind.Location;
import org.apache.hivemind.Resource;
/**
* Fake {@link org.apache.hivemind.Location} used by {@link org.apache.tapestry.test.Creator} when
* adding properties to a class.
*
* @author Howard Lewis Ship
* @since 4.0
*/
public class CreatorLocation implements Location
{
public String toString()
{
return "[Creator Location]";
}
public Resource getResource()
{
return null;
}
public int getLineNumber()
{
return 0;
}
public int getColumnNumber()
{
return 0;
}
}
1.14 +7 -4 jakarta-tapestry/framework/src/test/org/apache/tapestry/junit/TestComponentMessages.java
Index: TestComponentMessages.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/junit/TestComponentMessages.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- TestComponentMessages.java 12 May 2005 18:18:19 -0000 1.13
+++ TestComponentMessages.java 27 Jul 2005 22:24:49 -0000 1.14
@@ -40,6 +40,7 @@
import org.apache.tapestry.spec.IComponentSpecification;
import org.apache.tapestry.spec.ILibrarySpecification;
import org.apache.tapestry.spec.LibrarySpecification;
+import org.apache.tapestry.test.CreatorLocation;
/**
* Tests the class {@link org.apache.tapestry.services.impl.ComponentMessagesSourceImpl}.
@@ -116,7 +117,8 @@
* much as the full framework would do at runtime.
*/
- private IPage newPage(IComponentSpecification specification, ComponentMessagesSource source, Locale locale)
+ private IPage newPage(IComponentSpecification specification, ComponentMessagesSource source,
+ Locale locale)
{
ClassFactory classFactory = new ClassFactoryImpl();
@@ -125,11 +127,11 @@
InjectMessagesWorker injectMessages = new InjectMessagesWorker();
injectMessages.setComponentMessagesSource(source);
-
+
injectMessages.performEnhancement(op, specification);
-
+
new InjectSpecificationWorker().performEnhancement(op, specification);
-
+
IPage result = (IPage) op.getConstructor().newInstance();
result.setLocale(locale);
@@ -144,6 +146,7 @@
source.setComponentPropertySource(new NullComponentPropertySource());
IComponentSpecification spec = newSpec(location);
+ spec.setLocation(new CreatorLocation());
IPage page = newPage(spec, source, locale);
1.177 +1 -0 jakarta-tapestry/status.xml
Index: status.xml
===================================================================
RCS file: /home/cvs/jakarta-tapestry/status.xml,v
retrieving revision 1.176
retrieving revision 1.177
diff -u -r1.176 -r1.177
--- status.xml 27 Jul 2005 17:05:50 -0000 1.176
+++ status.xml 27 Jul 2005 22:24:49 -0000 1.177
@@ -56,6 +56,7 @@
<action type="fix" dev="HLS" fixes-bug="TAPESTRY-444">regexp validator(Email) script function name mismatch</action>
<action type="fix" dev="HLS" fixes-bug="TAPESTRY-446">Changes to assets are not picked up, even when caching is disabled</action>
<action type="fix" dev="HLS" fixes-bug="TAPESTRY-435,TAPESTRY-325,TAPESTRY-309,TAPESTRY-311,TAPESTRY-252,TAPESTRY-254,TAPESTRY-327,TAPESTRY-333" due-to="Our many international users">Add many translations of ValidationStrings.properties.</action>
+ <action type="fix" dev="HLS" fixes-bug="TAPESTRY-441">Poor reporting of duplicate method implementations</action>
</release>
<release version="4.0-beta-3" date="Jul 22 2005">
<action type="fix" dev="HLS" fixes-bug="TAPESTRY-398" due-to="Jonas Maurus">HiveMind configuration error breaks the useage of the state: binding prefix</action>
1.10 +2 -0 jakarta-tapestry/framework/src/java/org/apache/tapestry/resolver/PageSpecificationResolverImpl.java
Index: PageSpecificationResolverImpl.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/resolver/PageSpecificationResolverImpl.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- PageSpecificationResolverImpl.java 12 Jun 2005 15:27:16 -0000 1.9
+++ PageSpecificationResolverImpl.java 27 Jul 2005 22:24:50 -0000 1.10
@@ -17,6 +17,7 @@
import org.apache.commons.logging.Log;
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.Resource;
+import org.apache.hivemind.impl.LocationImpl;
import org.apache.tapestry.INamespace;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.PageNotFoundException;
@@ -237,6 +238,7 @@
IComponentSpecification specification = new ComponentSpecification();
specification.setPageSpecification(true);
specification.setSpecificationLocation(resource);
+ specification.setLocation(new LocationImpl(resource));
setSpecification(specification);
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org