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/03 00:51:24 UTC

cvs commit: jakarta-tapestry/src/documentation/content/xdocs/QuickStart tutorials-structure.aart index.xml

hlship      2005/07/02 15:51:24

  Modified:    .        status.xml
               annotations/src/java/org/apache/tapestry/annotations
                        InjectStateAnnotationWorker.java
                        PersistAnnotationWorker.java
                        AnnotationMessages.java
                        MethodAnnotationEnhancementWorker.java
                        InjectMetaAnnotationWorker.java
                        InjectComponentAnnotationWorker.java
                        AnnotationStrings.properties
                        AssetAnnotationWorker.java
                        BeanAnnotationWorker.java
                        ComponentClassAnnotationWorker.java
                        AnnotationEnhancementWorker.java
                        InjectPageAnnotationWorker.java
                        ParameterAnnotationWorker.java
                        InjectAssetAnnotationWorker.java
                        InjectScriptAnnotationWorker.java
                        ClassAnnotationEnhancementWorker.java
                        ComponentAnnotationWorker.java
                        InjectObjectAnnotationWorker.java
                        MessageAnnotationWorker.java
               annotations/src/test/org/apache/tapestry/annotations
                        TestInjectObjectAnnotationWorker.java
                        TestComponentClassAnnotationWorker.java
                        TestSimpleAnnotationWorkers.java
                        TestPersistAnnotationWorker.java
                        TestComponentAnnotationWorker.java
                        TestParameterAnnotationWorker.java
                        TestAnnotationEnhancementWorker.java
                        TestAssetAnnotationWorker.java
                        TestInjectComponentAnnotationWorker.java
                        TestInjectStateAnnotationWorker.java
                        BaseAnnotationTestCase.java
                        TestMessageAnnotationWorker.java
                        TestInjectAssetAnnotationWorker.java
                        TestBeanAnnotationWorker.java
               src/documentation/content/xdocs links.ent
               src/documentation/content/xdocs/QuickStart
                        tutorials-structure.aart index.xml
  Added:       annotations/src/java/org/apache/tapestry/annotations
                        AnnotationLocation.java
  Log:
  TAPESTRY-355: Annotations bypass line precise exception reporting
  
  Revision  Changes    Path
  1.150     +1 -0      jakarta-tapestry/status.xml
  
  Index: status.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/status.xml,v
  retrieving revision 1.149
  retrieving revision 1.150
  diff -u -r1.149 -r1.150
  --- status.xml	1 Jul 2005 20:42:03 -0000	1.149
  +++ status.xml	2 Jul 2005 22:51:23 -0000	1.150
  @@ -57,6 +57,7 @@
         <action type="fix" dev="HLS" fixes-bug="TAPESTRY-357">AbstractComponent: getMessages() and format() were removed, but should have been deprecated</action>
         <action type="fix" dev="HLS" fixes-bug="TAPESTRY-361">Using @Asset annotation causes NullPointerException</action>
         <action type="fix" dev="PF" fixes-bug="TAPESTRY-367">Removed obsolete "format" parameter from DatePicker</action>
  +      <action type="fix" dev="HLS" fixes-bug="TAPESTRY-355">Annotations bypass line precise exception reporting</action>
       </release>
       <release version="4.0-beta-1" date="Jun 24 2005">
          <action type="add" dev="HLS">Add InvokeListener component.</action>
  
  
  
  1.3       +2 -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.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- InjectStateAnnotationWorker.java	15 Jun 2005 13:34:30 -0000	1.2
  +++ InjectStateAnnotationWorker.java	2 Jul 2005 22:51:23 -0000	1.3
  @@ -16,6 +16,7 @@
   
   import java.lang.reflect.Method;
   
  +import org.apache.hivemind.Location;
   import org.apache.tapestry.engine.state.ApplicationStateManager;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.enhance.InjectStateWorker;
  @@ -44,7 +45,7 @@
       }
   
       public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Method method)
  +            Method method, Location location)
       {
           InjectState is = method.getAnnotation(InjectState.class);
   
  
  
  
  1.3       +3 -1      jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/PersistAnnotationWorker.java
  
  Index: PersistAnnotationWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/PersistAnnotationWorker.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PersistAnnotationWorker.java	15 Jun 2005 13:34:30 -0000	1.2
  +++ PersistAnnotationWorker.java	2 Jul 2005 22:51:23 -0000	1.3
  @@ -16,6 +16,7 @@
   
   import java.lang.reflect.Method;
   
  +import org.apache.hivemind.Location;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.IComponentSpecification;
   import org.apache.tapestry.spec.IPropertySpecification;
  @@ -33,7 +34,7 @@
   public class PersistAnnotationWorker implements MethodAnnotationEnhancementWorker
   {
       public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Method method)
  +            Method method, Location location)
       {
           Persist p = method.getAnnotation(Persist.class);
   
  @@ -44,6 +45,7 @@
   
           pspec.setName(propertyName);
           pspec.setPersistence(stategy);
  +        pspec.setLocation(location);
   
           spec.addPropertySpecification(pspec);
       }
  
  
  
  1.5       +10 -0     jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/AnnotationMessages.java
  
  Index: AnnotationMessages.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/AnnotationMessages.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AnnotationMessages.java	22 Jun 2005 12:47:21 -0000	1.4
  +++ AnnotationMessages.java	2 Jul 2005 22:51:23 -0000	1.5
  @@ -81,4 +81,14 @@
           return _formatter.format("binding-wrong-format", binding);
       }
   
  +    public static String methodAnnotation(Annotation annotation, Method method)
  +    {
  +        return _formatter.format("method-annotation", annotation, method);
  +    }
  +
  +    public static String classAnnotation(Annotation annotation, Class clazz)
  +    {
  +        return _formatter.format("class-annotation", annotation, clazz.getName());
  +    }
  +
   }
  
  
  
  1.4       +3 -1      jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/MethodAnnotationEnhancementWorker.java
  
  Index: MethodAnnotationEnhancementWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/MethodAnnotationEnhancementWorker.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MethodAnnotationEnhancementWorker.java	15 Jun 2005 13:34:30 -0000	1.3
  +++ MethodAnnotationEnhancementWorker.java	2 Jul 2005 22:51:23 -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.spec.IComponentSpecification;
   
  @@ -38,8 +39,9 @@
        * @param method
        *            the method to which the annotation is attached. The annotation
        *            may be obtained from the method.
  +     * @param location TODO
        */
   
       public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Method method);
  +            Method method, Location location);
   }
  
  
  
  1.2       +4 -2      jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/InjectMetaAnnotationWorker.java
  
  Index: InjectMetaAnnotationWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/InjectMetaAnnotationWorker.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- InjectMetaAnnotationWorker.java	22 Jun 2005 13:36:46 -0000	1.1
  +++ InjectMetaAnnotationWorker.java	2 Jul 2005 22:51:23 -0000	1.2
  @@ -16,6 +16,7 @@
   
   import java.lang.reflect.Method;
   
  +import org.apache.hivemind.Location;
   import org.apache.tapestry.enhance.EnhanceUtils;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.IComponentSpecification;
  @@ -30,7 +31,7 @@
   {
   
       public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Method method)
  +            Method method, Location location)
       {
           String propertyName = AnnotationUtils.getPropertyName(method);
   
  @@ -40,7 +41,8 @@
           is.setProperty(propertyName);
           is.setType("meta");
           is.setObject(annotation.value());
  -
  +        is.setLocation(location);
  +        
           spec.addInjectSpecification(is);
       }
   
  
  
  
  1.3       +2 -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.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- InjectComponentAnnotationWorker.java	15 Jun 2005 13:34:30 -0000	1.2
  +++ InjectComponentAnnotationWorker.java	2 Jul 2005 22:51:23 -0000	1.3
  @@ -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.InjectComponentWorker;
   import org.apache.tapestry.spec.IComponentSpecification;
  @@ -43,7 +44,7 @@
       }
   
       public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Method method)
  +            Method method, Location location)
       {
           InjectComponent ic = method.getAnnotation(InjectComponent.class);
           String propertyName = AnnotationUtils.getPropertyName(method);
  
  
  
  1.5       +3 -1      jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/AnnotationStrings.properties
  
  Index: AnnotationStrings.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/AnnotationStrings.properties,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AnnotationStrings.properties	22 Jun 2005 12:47:21 -0000	1.4
  +++ AnnotationStrings.properties	2 Jul 2005 22:51:23 -0000	1.5
  @@ -20,4 +20,6 @@
   failure-processing-annotation=An error occured processing annotation {0} of {1}: {2}
   failure-processing-class-annotation=An error occured processing annotation {0} of class {1}: {2}
   return-string-only=The method''s return type is {0}; this annotation is only allowed on methods that return java.lang.String.
  -binding-wrong-format=The specified binding, ''{0}'', is not properly formatted. It should be ''name=binding reference''.
  \ No newline at end of file
  +binding-wrong-format=The specified binding, ''{0}'', is not properly formatted. It should be ''name=binding reference''.
  +method-annotation=Annotation {0} of {1}
  +class-annotation=Annotation {0} of class {1}
  \ No newline at end of file
  
  
  
  1.4       +7 -2      jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/AssetAnnotationWorker.java
  
  Index: AssetAnnotationWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/AssetAnnotationWorker.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AssetAnnotationWorker.java	1 Jul 2005 17:26:05 -0000	1.3
  +++ AssetAnnotationWorker.java	2 Jul 2005 22:51:23 -0000	1.4
  @@ -16,6 +16,8 @@
   
   import java.lang.reflect.Method;
   
  +import org.apache.hivemind.Location;
  +import org.apache.hivemind.Resource;
   import org.apache.hivemind.impl.LocationImpl;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.AssetSpecification;
  @@ -34,7 +36,7 @@
   {
   
       public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Method method)
  +            Method method, Location location)
       {
           Asset asset = method.getAnnotation(Asset.class);
           String propertyName = AnnotationUtils.getPropertyName(method);
  @@ -46,7 +48,10 @@
           // Very important for assets, as they need a location (really, the Resource
           // of a location) to figure out what kind of asset they are.
   
  -        as.setLocation(new LocationImpl(spec.getSpecificationLocation()));
  +        Resource specResource = spec.getSpecificationLocation();
  +        Location assetLocation = new AnnotationLocation(specResource, location.toString());
  +
  +        as.setLocation(assetLocation);
   
           spec.addAsset(propertyName, as);
       }
  
  
  
  1.3       +3 -1      jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/BeanAnnotationWorker.java
  
  Index: BeanAnnotationWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/BeanAnnotationWorker.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- BeanAnnotationWorker.java	15 Jun 2005 13:34:30 -0000	1.2
  +++ BeanAnnotationWorker.java	2 Jul 2005 22:51:23 -0000	1.3
  @@ -17,6 +17,7 @@
   import java.lang.reflect.Method;
   
   import org.apache.hivemind.HiveMind;
  +import org.apache.hivemind.Location;
   import org.apache.tapestry.bean.LightweightBeanInitializer;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.BeanSpecification;
  @@ -33,7 +34,7 @@
   public class BeanAnnotationWorker implements MethodAnnotationEnhancementWorker
   {
       public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Method method)
  +            Method method, Location location)
       {
           Bean bean = method.getAnnotation(Bean.class);
           String propertyName = AnnotationUtils.getPropertyName(method);
  @@ -49,6 +50,7 @@
   
           bs.setClassName(beanClass.getName());
           bs.setPropertyName(propertyName);
  +        bs.setLocation(location);
   
           // Starting to like enums!
   
  
  
  
  1.2       +5 -3      jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/ComponentClassAnnotationWorker.java
  
  Index: ComponentClassAnnotationWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/ComponentClassAnnotationWorker.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ComponentClassAnnotationWorker.java	21 Jun 2005 19:46:15 -0000	1.1
  +++ ComponentClassAnnotationWorker.java	2 Jul 2005 22:51:23 -0000	1.2
  @@ -14,14 +14,15 @@
   
   package org.apache.tapestry.annotations;
   
  +import org.apache.hivemind.Location;
   import org.apache.tapestry.TapestryUtils;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.IComponentSpecification;
   
   /**
    * Sets properties of the {@link org.apache.tapestry.spec.IComponentSpecification} based on the
  - * {@link org.apache.tapestry.annotations.ComponentClass} annotation. In addition, marks the component as
  - * deprecated if the {@link java.lang.Deprecated} annotation is present on the class.
  + * {@link org.apache.tapestry.annotations.ComponentClass} annotation. In addition, marks the
  + * component as deprecated if the {@link java.lang.Deprecated} annotation is present on the class.
    * 
    * @author Howard Lewis Ship
    * @since 4.0
  @@ -30,12 +31,13 @@
   {
   
       public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Class baseClass)
  +            Class baseClass, Location location)
       {
           ComponentClass component = (ComponentClass) baseClass.getAnnotation(ComponentClass.class);
   
           spec.setAllowBody(component.allowBody());
           spec.setAllowInformalParameters(component.allowInformalParameters());
  +        spec.setLocation(location);
   
           String[] names = TapestryUtils.split(component.reservedParameters());
           for (String name : names)
  
  
  
  1.4       +31 -8     jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/AnnotationEnhancementWorker.java
  
  Index: AnnotationEnhancementWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/AnnotationEnhancementWorker.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AnnotationEnhancementWorker.java	15 Jun 2005 13:34:30 -0000	1.3
  +++ AnnotationEnhancementWorker.java	2 Jul 2005 22:51:23 -0000	1.4
  @@ -18,7 +18,11 @@
   import java.lang.reflect.Method;
   import java.util.Map;
   
  +import org.apache.hivemind.ClassResolver;
   import org.apache.hivemind.ErrorLog;
  +import org.apache.hivemind.Location;
  +import org.apache.hivemind.Resource;
  +import org.apache.hivemind.util.ClasspathResource;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.enhance.EnhancementWorker;
   import org.apache.tapestry.spec.IComponentSpecification;
  @@ -34,6 +38,8 @@
    */
   public class AnnotationEnhancementWorker implements EnhancementWorker
   {
  +    private ClassResolver _classResolver;
  +
       private ErrorLog _errorLog;
   
       private Map _methodWorkers;
  @@ -49,19 +55,26 @@
       {
           Class clazz = op.getBaseClass();
   
  +        Resource classResource = newClassResource(clazz);
  +
           for (Annotation a : clazz.getAnnotations())
           {
  -            performClassEnhancement(op, spec, clazz, a);
  +            performClassEnhancement(op, spec, clazz, a, classResource);
           }
   
           for (Method m : clazz.getMethods())
           {
  -            performMethodEnhancement(op, spec, m);
  +            performMethodEnhancement(op, spec, m, classResource);
           }
       }
   
  +    private ClasspathResource newClassResource(Class clazz)
  +    {
  +        return new ClasspathResource(_classResolver, clazz.getName().replace('.', '/'));
  +    }
  +
       void performClassEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Class clazz, Annotation annotation)
  +            Class clazz, Annotation annotation, Resource classResource)
       {
           ClassAnnotationEnhancementWorker worker = (ClassAnnotationEnhancementWorker) _classWorkers
                   .get(annotation.annotationType());
  @@ -71,7 +84,10 @@
   
           try
           {
  -            worker.performEnhancement(op, spec, clazz);
  +            Location location = new AnnotationLocation(classResource, AnnotationMessages
  +                    .classAnnotation(annotation, clazz));
  +
  +            worker.performEnhancement(op, spec, clazz, location);
           }
           catch (Exception ex)
           {
  @@ -84,16 +100,16 @@
       }
   
       void performMethodEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Method method)
  +            Method method, Resource classResource)
       {
           for (Annotation a : method.getAnnotations())
           {
  -            performMethodEnhancement(op, spec, method, a);
  +            performMethodEnhancement(op, spec, method, a, classResource);
           }
       }
   
       void performMethodEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Method method, Annotation annotation)
  +            Method method, Annotation annotation, Resource classResource)
       {
           MethodAnnotationEnhancementWorker worker = (MethodAnnotationEnhancementWorker) _methodWorkers
                   .get(annotation.annotationType());
  @@ -103,7 +119,9 @@
   
           try
           {
  -            worker.performEnhancement(op, spec, method);
  +            Location location = new AnnotationLocation(classResource, AnnotationMessages
  +                    .methodAnnotation(annotation, method));
  +            worker.performEnhancement(op, spec, method, location);
           }
           catch (Exception ex)
           {
  @@ -124,4 +142,9 @@
       {
           _errorLog = errorLog;
       }
  +
  +    public void setClassResolver(ClassResolver classResolver)
  +    {
  +        _classResolver = classResolver;
  +    }
   }
  
  
  
  1.3       +3 -1      jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/InjectPageAnnotationWorker.java
  
  Index: InjectPageAnnotationWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/InjectPageAnnotationWorker.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- InjectPageAnnotationWorker.java	21 Jun 2005 11:53:32 -0000	1.2
  +++ InjectPageAnnotationWorker.java	2 Jul 2005 22:51:23 -0000	1.3
  @@ -16,6 +16,7 @@
   
   import java.lang.reflect.Method;
   
  +import org.apache.hivemind.Location;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.IComponentSpecification;
   import org.apache.tapestry.spec.InjectSpecification;
  @@ -33,7 +34,7 @@
   {
   
       public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Method method)
  +            Method method, Location location)
       {
           InjectPage injectPage = method.getAnnotation(InjectPage.class);
   
  @@ -44,6 +45,7 @@
           is.setProperty(propertyName);
           is.setType("page");
           is.setObject(injectPage.value());
  +        is.setLocation(location);
   
           spec.addInjectSpecification(is);
       }
  
  
  
  1.3       +3 -1      jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/ParameterAnnotationWorker.java
  
  Index: ParameterAnnotationWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/ParameterAnnotationWorker.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ParameterAnnotationWorker.java	15 Jun 2005 13:34:30 -0000	1.2
  +++ ParameterAnnotationWorker.java	2 Jul 2005 22:51:23 -0000	1.3
  @@ -17,6 +17,7 @@
   import java.lang.reflect.Method;
   
   import org.apache.hivemind.HiveMind;
  +import org.apache.hivemind.Location;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.IComponentSpecification;
   import org.apache.tapestry.spec.IParameterSpecification;
  @@ -34,7 +35,7 @@
   {
   
       public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Method method)
  +            Method method, Location location)
       {
           Parameter parameter = method.getAnnotation(Parameter.class);
   
  @@ -65,6 +66,7 @@
           ps.setPropertyName(propertyName);
           ps.setRequired(parameter.required());
           ps.setType(propertyType.getName());
  +        ps.setLocation(location);
   
           spec.addParameter(ps);
       }
  
  
  
  1.3       +2 -1      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.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- InjectAssetAnnotationWorker.java	15 Jun 2005 13:34:30 -0000	1.2
  +++ InjectAssetAnnotationWorker.java	2 Jul 2005 22:51:23 -0000	1.3
  @@ -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;
  @@ -43,7 +44,7 @@
       }
   
       public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Method method)
  +            Method method, Location location)
       {
           InjectAsset as = method.getAnnotation(InjectAsset.class);
           
  
  
  
  1.2       +3 -1      jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/InjectScriptAnnotationWorker.java
  
  Index: InjectScriptAnnotationWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/InjectScriptAnnotationWorker.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- InjectScriptAnnotationWorker.java	22 Jun 2005 13:36:46 -0000	1.1
  +++ InjectScriptAnnotationWorker.java	2 Jul 2005 22:51:23 -0000	1.2
  @@ -16,6 +16,7 @@
   
   import java.lang.reflect.Method;
   
  +import org.apache.hivemind.Location;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.IComponentSpecification;
   import org.apache.tapestry.spec.InjectSpecification;
  @@ -29,7 +30,7 @@
   {
   
       public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Method method)
  +            Method method, Location location)
       {
           InjectScript annotation = method.getAnnotation(InjectScript.class);
   
  @@ -40,6 +41,7 @@
           is.setProperty(propertyName);
           is.setType("script");
           is.setObject(annotation.value());
  +        is.setLocation(location);
   
           spec.addInjectSpecification(is);
       }
  
  
  
  1.3       +4 -1      jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/ClassAnnotationEnhancementWorker.java
  
  Index: ClassAnnotationEnhancementWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/ClassAnnotationEnhancementWorker.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ClassAnnotationEnhancementWorker.java	15 Jun 2005 13:34:30 -0000	1.2
  +++ ClassAnnotationEnhancementWorker.java	2 Jul 2005 22:51:23 -0000	1.3
  @@ -14,6 +14,7 @@
   
   package org.apache.tapestry.annotations;
   
  +import org.apache.hivemind.Location;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.IComponentSpecification;
   
  @@ -35,9 +36,11 @@
        *            the specification of the component for which a class is being enhanced
        * @param baseClass
        *            the class containing the annotation
  +     * @param location
  +     *            the location associated with the annotation
        */
   
       public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Class baseClass);
  +            Class baseClass, Location location);
   
   }
  
  
  
  1.7       +6 -3      jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/ComponentAnnotationWorker.java
  
  Index: ComponentAnnotationWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/ComponentAnnotationWorker.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ComponentAnnotationWorker.java	22 Jun 2005 12:57:44 -0000	1.6
  +++ ComponentAnnotationWorker.java	2 Jul 2005 22:51:23 -0000	1.7
  @@ -17,6 +17,7 @@
   import java.lang.reflect.Method;
   
   import org.apache.hivemind.ApplicationRuntimeException;
  +import org.apache.hivemind.Location;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.BindingSpecification;
   import org.apache.tapestry.spec.BindingType;
  @@ -38,7 +39,7 @@
   {
   
       public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Method method)
  +            Method method, Location location)
       {
           Component component = method.getAnnotation(Component.class);
   
  @@ -49,10 +50,11 @@
           cc.setInheritInformalParameters(component.inheritInformalParameters());
           cc.setType(component.type());
           cc.setPropertyName(propertyName);
  +        cc.setLocation(location);
   
           for (String binding : component.bindings())
           {
  -            addBinding(cc, binding);
  +            addBinding(cc, binding, location);
           }
   
           String id = component.id();
  @@ -63,7 +65,7 @@
           spec.addComponent(id, cc);
       }
   
  -    void addBinding(IContainedComponent component, String binding)
  +    void addBinding(IContainedComponent component, String binding, Location location)
       {
           int equalsx = binding.indexOf('=');
   
  @@ -79,6 +81,7 @@
           IBindingSpecification bs = new BindingSpecification();
           bs.setType(BindingType.PREFIXED);
           bs.setValue(value);
  +        bs.setLocation(location);
   
           component.setBinding(name, bs);
       }
  
  
  
  1.4       +2 -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.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- InjectObjectAnnotationWorker.java	15 Jun 2005 13:34:30 -0000	1.3
  +++ InjectObjectAnnotationWorker.java	2 Jul 2005 22:51:23 -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.InjectObjectWorker;
   import org.apache.tapestry.services.InjectedValueProvider;
  @@ -46,7 +47,7 @@
       }
   
       public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Method method)
  +            Method method, Location location)
       {
           InjectObject io = method.getAnnotation(InjectObject.class);
   
  
  
  
  1.3       +2 -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.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- MessageAnnotationWorker.java	22 Jun 2005 13:51:00 -0000	1.2
  +++ MessageAnnotationWorker.java	2 Jul 2005 22:51:23 -0000	1.3
  @@ -18,6 +18,7 @@
   import java.lang.reflect.Modifier;
   
   import org.apache.hivemind.ApplicationRuntimeException;
  +import org.apache.hivemind.Location;
   import org.apache.hivemind.service.BodyBuilder;
   import org.apache.hivemind.service.MethodSignature;
   import org.apache.tapestry.Tapestry;
  @@ -34,7 +35,7 @@
   {
   
       public void performEnhancement(EnhancementOperation op, IComponentSpecification spec,
  -            Method method)
  +            Method method, Location location)
       {
           if (!method.getReturnType().equals(String.class))
               throw new ApplicationRuntimeException(AnnotationMessages.returnStringOnly(method
  
  
  
  1.1                  jakarta-tapestry/annotations/src/java/org/apache/tapestry/annotations/AnnotationLocation.java
  
  Index: AnnotationLocation.java
  ===================================================================
  // Copyright 2005 The Apache Software Foundation
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  package org.apache.tapestry.annotations;
  
  import org.apache.hivemind.Location;
  import org.apache.hivemind.Resource;
  import org.apache.hivemind.util.Defense;
  
  /**
   * Implementation of {@link org.apache.hivemind.Location} that is used to identify the class and/or
   * method and annotation. This is useful for line-precise exception reporting of errors related to
   * annotations.
   * 
   * @author Howard Lewis Ship
   * @since 4.0
   */
  public class AnnotationLocation implements Location
  {
      private final Resource _resource;
  
      private final String _description;
  
      public AnnotationLocation(Resource resource, String description)
      {
          Defense.notNull(resource, "resource");
          Defense.notNull(description, "description");
  
          _resource = resource;
          _description = description;
      }
  
      /**
       * Returns the location's description.
       */
  
      public String toString()
      {
          return _description;
      }
  
      /**
       * Returns a resource corresponding to the Java class.
       */
  
      public Resource getResource()
      {
          return _resource;
      }
  
      /**
       * Always returns 0.
       */
  
      public int getLineNumber()
      {
          return 0;
      }
  
      /**
       * Always returns 0.
       */
  
      public int getColumnNumber()
      {
          return 0;
      }
  
      @Override
      public boolean equals(Object other)
      {
          if (other instanceof AnnotationLocation)
          {
              AnnotationLocation otherLocation = (AnnotationLocation) other;
  
              return _resource.equals(otherLocation._resource)
                      && _description.equals(otherLocation._description);
          }
  
          return false;
      }
  }
  
  
  
  1.4       +1 -1      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.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestInjectObjectAnnotationWorker.java	15 Jun 2005 13:34:31 -0000	1.3
  +++ TestInjectObjectAnnotationWorker.java	2 Jul 2005 22:51:24 -0000	1.4
  @@ -62,7 +62,7 @@
   
           replayControls();
   
  -        worker.performEnhancement(op, spec, m);
  +        worker.performEnhancement(op, spec, m, null);
   
           verifyControls();
       }
  
  
  
  1.2       +9 -6      jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestComponentClassAnnotationWorker.java
  
  Index: TestComponentClassAnnotationWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestComponentClassAnnotationWorker.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestComponentClassAnnotationWorker.java	21 Jun 2005 19:46:16 -0000	1.1
  +++ TestComponentClassAnnotationWorker.java	2 Jul 2005 22:51:24 -0000	1.2
  @@ -14,6 +14,7 @@
   
   package org.apache.tapestry.annotations;
   
  +import org.apache.hivemind.Location;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.ComponentSpecification;
   import org.apache.tapestry.spec.IComponentSpecification;
  @@ -38,14 +39,14 @@
           return op;
       }
   
  -    private IComponentSpecification attempt(Class baseClass)
  +    private IComponentSpecification attempt(Class baseClass, Location location)
       {
           EnhancementOperation op = newOp();
           IComponentSpecification spec = new ComponentSpecification();
   
           replayControls();
   
  -        new ComponentClassAnnotationWorker().performEnhancement(op, spec, baseClass);
  +        new ComponentClassAnnotationWorker().performEnhancement(op, spec, baseClass, location);
   
           verifyControls();
   
  @@ -54,18 +55,20 @@
   
       public void testBasic()
       {
  -        IComponentSpecification spec = attempt(BasicComponent.class);
  +        Location l = newLocation();
  +        IComponentSpecification spec = attempt(BasicComponent.class, l);
   
           assertEquals(true, spec.getAllowBody());
           assertEquals(true, spec.getAllowInformalParameters());
           assertEquals(false, spec.isReservedParameterName("foo"));
           assertEquals(false, spec.isReservedParameterName("bar"));
           assertEquals(false, spec.isDeprecated());
  +        assertSame(l, spec.getLocation());
       }
   
       public void testFormalOnly()
       {
  -        IComponentSpecification spec = attempt(FormalOnlyComponent.class);
  +        IComponentSpecification spec = attempt(FormalOnlyComponent.class, null);
   
           assertEquals(false, spec.getAllowBody());
           assertEquals(false, spec.getAllowInformalParameters());
  @@ -74,14 +77,14 @@
   
       public void testDeprecated()
       {
  -        IComponentSpecification spec = attempt(DeprecatedComponent.class);
  +        IComponentSpecification spec = attempt(DeprecatedComponent.class, null);
   
           assertEquals(true, spec.isDeprecated());
       }
   
       public void testReservedParameters()
       {
  -        IComponentSpecification spec = attempt(ReservedParametersComponent.class);
  +        IComponentSpecification spec = attempt(ReservedParametersComponent.class, null);
   
           assertEquals(true, spec.isReservedParameterName("foo"));
           assertEquals(true, spec.isReservedParameterName("bar"));
  
  
  
  1.2       +12 -8     jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestSimpleAnnotationWorkers.java
  
  Index: TestSimpleAnnotationWorkers.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestSimpleAnnotationWorkers.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestSimpleAnnotationWorkers.java	22 Jun 2005 13:36:45 -0000	1.1
  +++ TestSimpleAnnotationWorkers.java	2 Jul 2005 22:51:24 -0000	1.2
  @@ -16,6 +16,7 @@
   
   import java.lang.reflect.Method;
   
  +import org.apache.hivemind.Location;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.ComponentSpecification;
   import org.apache.tapestry.spec.IComponentSpecification;
  @@ -32,44 +33,47 @@
   {
       public void testInjectPage()
       {
  -        IComponentSpecification spec = execute(new InjectPageAnnotationWorker(), "getMyPage");
  +        Location l = newLocation();
  +        IComponentSpecification spec = execute(new InjectPageAnnotationWorker(), "getMyPage", l);
   
           InjectSpecification is = (InjectSpecification) spec.getInjectSpecifications().get(0);
   
           assertEquals("myPage", is.getProperty());
           assertEquals("page", is.getType());
           assertEquals("SomePageName", is.getObject());
  -        assertNull(is.getLocation());
  +        assertSame(l, is.getLocation());
       }
   
       public void testInjectMeta()
       {
  -        IComponentSpecification spec = execute(new InjectMetaAnnotationWorker(), "getMetaFred");
  +        Location l = newLocation();
  +        IComponentSpecification spec = execute(new InjectMetaAnnotationWorker(), "getMetaFred", l);
   
           InjectSpecification is = (InjectSpecification) spec.getInjectSpecifications().get(0);
   
           assertEquals("metaFred", is.getProperty());
           assertEquals("meta", is.getType());
           assertEquals("fred", is.getObject());
  -        assertNull(is.getLocation());
  +        assertSame(l, is.getLocation());
   
       }
   
       public void testInjectScript()
       {
  -        IComponentSpecification spec = execute(new InjectScriptAnnotationWorker(), "getScript");
  +        Location l = newLocation();
  +        IComponentSpecification spec = execute(new InjectScriptAnnotationWorker(), "getScript", l);
   
           InjectSpecification is = (InjectSpecification) spec.getInjectSpecifications().get(0);
   
           assertEquals("script", is.getProperty());
           assertEquals("script", is.getType());
           assertEquals("foo.script", is.getObject());
  -        assertNull(is.getLocation());
  +        assertSame(l, is.getLocation());
   
       }
   
       private IComponentSpecification execute(MethodAnnotationEnhancementWorker worker,
  -            String methodName)
  +            String methodName, Location location)
       {
           EnhancementOperation op = newOp();
           IComponentSpecification spec = new ComponentSpecification();
  @@ -78,7 +82,7 @@
   
           replayControls();
   
  -        worker.performEnhancement(op, spec, method);
  +        worker.performEnhancement(op, spec, method, location);
   
           verifyControls();
   
  
  
  
  1.3       +5 -1      jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestPersistAnnotationWorker.java
  
  Index: TestPersistAnnotationWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestPersistAnnotationWorker.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestPersistAnnotationWorker.java	15 Jun 2005 13:34:31 -0000	1.2
  +++ TestPersistAnnotationWorker.java	2 Jul 2005 22:51:24 -0000	1.3
  @@ -16,6 +16,7 @@
   
   import java.lang.reflect.Method;
   
  +import org.apache.hivemind.Location;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.ComponentSpecification;
   import org.apache.tapestry.spec.IComponentSpecification;
  @@ -32,6 +33,8 @@
   {
       public void testInject()
       {
  +        Location l = newLocation();
  +
           EnhancementOperation op = newOp();
           IComponentSpecification spec = new ComponentSpecification();
   
  @@ -39,7 +42,7 @@
   
           Method m = findMethod(AnnotatedPage.class, "getClientPersistentProperty");
   
  -        new PersistAnnotationWorker().performEnhancement(op, spec, m);
  +        new PersistAnnotationWorker().performEnhancement(op, spec, m, l);
   
           verifyControls();
   
  @@ -47,5 +50,6 @@
   
           assertEquals("client", ps.getPersistence());
           assertEquals("clientPersistentProperty", ps.getName());
  +        assertSame(l, ps.getLocation());
       }
   }
  
  
  
  1.6       +16 -12    jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestComponentAnnotationWorker.java
  
  Index: TestComponentAnnotationWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestComponentAnnotationWorker.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TestComponentAnnotationWorker.java	22 Jun 2005 12:57:44 -0000	1.5
  +++ TestComponentAnnotationWorker.java	2 Jul 2005 22:51:24 -0000	1.6
  @@ -16,8 +16,7 @@
   
   import java.lang.reflect.Method;
   
  -import org.apache.hivemind.ApplicationRuntimeException;
  -import org.apache.tapestry.enhance.EnhanceUtils;
  +import org.apache.hivemind.Location;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.BindingType;
   import org.apache.tapestry.spec.ComponentSpecification;
  @@ -33,7 +32,7 @@
    */
   public class TestComponentAnnotationWorker extends BaseAnnotationTestCase
   {
  -    private IContainedComponent run(String id, String methodName)
  +    private IContainedComponent run(String id, String methodName, Location location)
       {
           Method method = findMethod(AnnotatedPage.class, methodName);
   
  @@ -43,7 +42,7 @@
   
           IComponentSpecification spec = new ComponentSpecification();
   
  -        new ComponentAnnotationWorker().performEnhancement(op, spec, method);
  +        new ComponentAnnotationWorker().performEnhancement(op, spec, method, location);
   
           verifyControls();
   
  @@ -52,36 +51,39 @@
   
       public void testSimple()
       {
  -        IContainedComponent cc = run("textField", "getTextField");
  +        Location l = newLocation();
  +
  +        IContainedComponent cc = run("textField", "getTextField", l);
   
           assertEquals("TextField", cc.getType());
           assertEquals(false, cc.getInheritInformalParameters());
           assertEquals(null, cc.getCopyOf());
  -        assertNull(cc.getLocation());
  +        assertSame(l, cc.getLocation());
           assertEquals(true, cc.getBindingNames().isEmpty());
           assertEquals("textField", cc.getPropertyName());
       }
   
       public void testExplicitId()
       {
  -        IContainedComponent cc = run("email", "getEmailField");
  +        IContainedComponent cc = run("email", "getEmailField", null);
   
           assertEquals("emailField", cc.getPropertyName());
       }
   
       public void testInheritInformalParameters()
       {
  -        IContainedComponent cc = run("inherit", "getInherit");
  +        IContainedComponent cc = run("inherit", "getInherit", null);
   
           assertEquals(true, cc.getInheritInformalParameters());
       }
   
       public void testWithBindings()
       {
  -        IContainedComponent cc = run("componentWithBindings", "getComponentWithBindings");
  +        Location l = newLocation();
  +        IContainedComponent cc = run("componentWithBindings", "getComponentWithBindings", l);
   
           IBindingSpecification bs1 = cc.getBinding("condition");
  -        assertNull(bs1.getLocation());
  +        assertSame(l, bs1.getLocation());
           assertEquals(BindingType.PREFIXED, bs1.getType());
           assertEquals("message", bs1.getValue());
   
  @@ -91,10 +93,12 @@
   
       public void testBindingWhitespaceTrimmed()
       {
  -        IContainedComponent cc = run("whitespace", "getWhitespace");
  +        Location l = newLocation();
  +
  +        IContainedComponent cc = run("whitespace", "getWhitespace", l);
   
           IBindingSpecification bs1 = cc.getBinding("value");
  -        assertNull(bs1.getLocation());
  +        assertSame(l, bs1.getLocation());
           assertEquals(BindingType.PREFIXED, bs1.getType());
           assertEquals("email", bs1.getValue());
   
  
  
  
  1.3       +16 -12    jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestParameterAnnotationWorker.java
  
  Index: TestParameterAnnotationWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestParameterAnnotationWorker.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestParameterAnnotationWorker.java	15 Jun 2005 13:34:31 -0000	1.2
  +++ TestParameterAnnotationWorker.java	2 Jul 2005 22:51:24 -0000	1.3
  @@ -16,6 +16,7 @@
   
   import java.lang.reflect.Method;
   
  +import org.apache.hivemind.Location;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.ComponentSpecification;
   import org.apache.tapestry.spec.IComponentSpecification;
  @@ -30,12 +31,13 @@
    */
   public class TestParameterAnnotationWorker extends BaseAnnotationTestCase
   {
  -    private IParameterSpecification attempt(String propertyName)
  +    private IParameterSpecification attempt(String propertyName, Location location)
       {
  -        return attempt(propertyName, propertyName);
  +        return attempt(propertyName, propertyName, location);
       }
   
  -    private IParameterSpecification attempt(String propertyName, String parameterName)
  +    private IParameterSpecification attempt(String propertyName, String parameterName,
  +            Location location)
       {
           Method m = findMethod(AnnotatedPage.class, "get"
                   + propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1));
  @@ -50,7 +52,7 @@
   
           replayControls();
   
  -        new ParameterAnnotationWorker().performEnhancement(op, spec, m);
  +        new ParameterAnnotationWorker().performEnhancement(op, spec, m, location);
   
           verifyControls();
   
  @@ -59,14 +61,16 @@
   
       public void testSimple()
       {
  -        IParameterSpecification ps = attempt("simpleParameter");
  +        Location l = newLocation();
  +
  +        IParameterSpecification ps = attempt("simpleParameter", l);
   
           assertListsEqual(new Object[] {}, ps.getAliasNames().toArray());
           assertEquals(true, ps.getCache());
           assertEquals(null, ps.getDefaultBindingType());
           assertEquals(null, ps.getDefaultValue());
           assertEquals(null, ps.getDescription());
  -        assertNull(ps.getLocation());
  +        assertSame(l, ps.getLocation());
           assertEquals("simpleParameter", ps.getParameterName());
           assertEquals("simpleParameter", ps.getPropertyName());
           assertEquals("java.lang.String", ps.getType());
  @@ -74,14 +78,14 @@
   
       public void testRequired()
       {
  -        IParameterSpecification ps = attempt("requiredParameter");
  +        IParameterSpecification ps = attempt("requiredParameter", null);
   
           assertEquals(true, ps.isRequired());
       }
   
       public void testDefaultBinding()
       {
  -        IParameterSpecification ps = attempt("beanDefaultParameter");
  +        IParameterSpecification ps = attempt("beanDefaultParameter", null);
   
           assertEquals("bean", ps.getDefaultBindingType());
           assertEquals("java.lang.Object", ps.getType());
  @@ -89,14 +93,14 @@
   
       public void testCacheOff()
       {
  -        IParameterSpecification ps = attempt("nonCachedParameter");
  +        IParameterSpecification ps = attempt("nonCachedParameter", null);
   
           assertEquals(false, ps.getCache());
       }
   
       public void testAliases()
       {
  -        IParameterSpecification ps = attempt("aliasedParameter");
  +        IParameterSpecification ps = attempt("aliasedParameter", null);
   
           assertListsEqual(new String[]
           { "fred" }, ps.getAliasNames().toArray());
  @@ -104,13 +108,13 @@
   
       public void testDeprecated()
       {
  -        IParameterSpecification ps = attempt("deprecatedParameter");
  +        IParameterSpecification ps = attempt("deprecatedParameter", null);
           assertEquals(true, ps.isDeprecated());
       }
   
       public void testNamed()
       {
  -        IParameterSpecification ps = attempt("namedParameter", "fred");
  +        IParameterSpecification ps = attempt("namedParameter", "fred", null);
   
           assertEquals("fred", ps.getParameterName());
           assertEquals("namedParameter", ps.getPropertyName());
  
  
  
  1.5       +72 -5     jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestAnnotationEnhancementWorker.java
  
  Index: TestAnnotationEnhancementWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestAnnotationEnhancementWorker.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TestAnnotationEnhancementWorker.java	21 Jun 2005 22:31:37 -0000	1.4
  +++ TestAnnotationEnhancementWorker.java	2 Jul 2005 22:51:24 -0000	1.5
  @@ -14,11 +14,15 @@
   
   package org.apache.tapestry.annotations;
   
  +import java.lang.annotation.Annotation;
   import java.lang.reflect.Method;
   import java.util.Collections;
   import java.util.Map;
   
  +import org.apache.hivemind.ClassResolver;
   import org.apache.hivemind.ErrorLog;
  +import org.apache.hivemind.Resource;
  +import org.apache.hivemind.impl.DefaultClassResolver;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.IComponentSpecification;
   import org.easymock.MockControl;
  @@ -68,6 +72,8 @@
   
       public void testAnnotationMatch()
       {
  +        ClassResolver resolver = new DefaultClassResolver();
  +
           EnhancementOperation op = newOp(AnnotatedPage.class);
           IComponentSpecification spec = newSpec();
   
  @@ -75,20 +81,49 @@
   
           Method m = findMethod(AnnotatedPage.class, "getInjectedObject");
   
  -        methodWorker.performEnhancement(op, spec, m);
  +        AnnotationLocation location = newMethodLocation(
  +                resolver,
  +                AnnotatedPage.class,
  +                m,
  +                InjectObject.class);
  +
  +        methodWorker.performEnhancement(op, spec, m, location);
   
           replayControls();
   
           AnnotationEnhancementWorker worker = new AnnotationEnhancementWorker();
           worker.setMethodWorkers(newMap(InjectObject.class, methodWorker));
  +        worker.setClassResolver(resolver);
   
           worker.performEnhancement(op, spec);
   
           verifyControls();
       }
   
  +    protected AnnotationLocation newMethodLocation(ClassResolver resolver, Class baseClass,
  +            Method m, Class annotationClass)
  +    {
  +        Resource classResource = newResource(resolver, baseClass);
  +
  +        return new AnnotationLocation(classResource, AnnotationMessages.methodAnnotation(m
  +                .getAnnotation(annotationClass), m));
  +    }
  +
  +    private AnnotationLocation newClassLocation(ClassResolver resolver, Class baseClass,
  +            Class annotationClass)
  +    {
  +        Resource classResource = newResource(resolver, baseClass);
  +        Annotation annotation = baseClass.getAnnotation(annotationClass);
  +
  +        return new AnnotationLocation(classResource, AnnotationMessages.classAnnotation(
  +                annotation,
  +                baseClass));
  +    }
  +
       public void testAnnotationWithSubclass()
       {
  +        ClassResolver resolver = new DefaultClassResolver();
  +
           EnhancementOperation op = newOp(AnnotatedPageSubclass.class);
           IComponentSpecification spec = newSpec();
   
  @@ -96,12 +131,19 @@
   
           Method m = findMethod(AnnotatedPageSubclass.class, "getInjectedObject");
   
  -        methodWorker.performEnhancement(op, spec, m);
  +        AnnotationLocation location = newMethodLocation(
  +                resolver,
  +                AnnotatedPageSubclass.class,
  +                m,
  +                InjectObject.class);
  +
  +        methodWorker.performEnhancement(op, spec, m, location);
   
           replayControls();
   
           AnnotationEnhancementWorker worker = new AnnotationEnhancementWorker();
           worker.setMethodWorkers(newMap(InjectObject.class, methodWorker));
  +        worker.setClassResolver(resolver);
   
           worker.performEnhancement(op, spec);
   
  @@ -110,6 +152,8 @@
   
       public void testAnnotationFailure()
       {
  +        ClassResolver resolver = new DefaultClassResolver();
  +
           ErrorLog log = newLog();
           Throwable t = new RuntimeException("Woops!");
   
  @@ -122,7 +166,13 @@
   
           Method m = findMethod(AnnotatedPage.class, "getInjectedObject");
   
  -        methodWorker.performEnhancement(op, spec, m);
  +        AnnotationLocation location = newMethodLocation(
  +                resolver,
  +                AnnotatedPage.class,
  +                m,
  +                InjectObject.class);
  +
  +        methodWorker.performEnhancement(op, spec, m, location);
           methodWorkerc.setThrowable(t);
   
           log
  @@ -138,6 +188,7 @@
           AnnotationEnhancementWorker worker = new AnnotationEnhancementWorker();
           worker.setMethodWorkers(newMap(InjectObject.class, methodWorker));
           worker.setErrorLog(log);
  +        worker.setClassResolver(resolver);
   
           worker.performEnhancement(op, spec);
   
  @@ -151,17 +202,25 @@
   
       public void testClassAnnotation()
       {
  +        ClassResolver resolver = new DefaultClassResolver();
  +
           EnhancementOperation op = newOp(DeprecatedBean.class);
           IComponentSpecification spec = newSpec();
   
           ClassAnnotationEnhancementWorker classWorker = (ClassAnnotationEnhancementWorker) newMock(ClassAnnotationEnhancementWorker.class);
   
  -        classWorker.performEnhancement(op, spec, DeprecatedBean.class);
  +        AnnotationLocation location = newClassLocation(
  +                resolver,
  +                DeprecatedBean.class,
  +                Deprecated.class);
  +
  +        classWorker.performEnhancement(op, spec, DeprecatedBean.class, location);
   
           replayControls();
   
           AnnotationEnhancementWorker worker = new AnnotationEnhancementWorker();
           worker.setClassWorkers(newMap(Deprecated.class, classWorker));
  +        worker.setClassResolver(resolver);
   
           worker.performEnhancement(op, spec);
   
  @@ -170,6 +229,8 @@
   
       public void testClassAnnotationFailure()
       {
  +        ClassResolver resolver = new DefaultClassResolver();
  +
           ErrorLog log = newLog();
           EnhancementOperation op = newOp(DeprecatedBean.class);
           IComponentSpecification spec = newSpec();
  @@ -180,7 +241,12 @@
   
           Throwable t = new RuntimeException("Simulated failure.");
   
  -        classWorker.performEnhancement(op, spec, DeprecatedBean.class);
  +        AnnotationLocation location = newClassLocation(
  +                resolver,
  +                DeprecatedBean.class,
  +                Deprecated.class);
  +
  +        classWorker.performEnhancement(op, spec, DeprecatedBean.class, location);
           classWorkerc.setThrowable(t);
   
           log
  @@ -195,6 +261,7 @@
           AnnotationEnhancementWorker worker = new AnnotationEnhancementWorker();
           worker.setClassWorkers(newMap(Deprecated.class, classWorker));
           worker.setErrorLog(log);
  +        worker.setClassResolver(resolver);
   
           worker.performEnhancement(op, spec);
   
  
  
  
  1.4       +3 -2      jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestAssetAnnotationWorker.java
  
  Index: TestAssetAnnotationWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestAssetAnnotationWorker.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestAssetAnnotationWorker.java	1 Jul 2005 17:26:05 -0000	1.3
  +++ TestAssetAnnotationWorker.java	2 Jul 2005 22:51:24 -0000	1.4
  @@ -35,6 +35,7 @@
   {
       public void testSuccess()
       {
  +        Location l = newLocation();
           Resource r = (Resource) newMock(Resource.class);
           EnhancementOperation op = newOp();
           IComponentSpecification spec = new ComponentSpecification();
  @@ -44,13 +45,13 @@
   
           Method m = findMethod(AnnotatedPage.class, "getGlobalStylesheet");
   
  -        new AssetAnnotationWorker().performEnhancement(op, spec, m);
  +        new AssetAnnotationWorker().performEnhancement(op, spec, m, l);
   
           verifyControls();
   
           IAssetSpecification as = spec.getAsset("globalStylesheet");
           assertEquals("/style/global.css", as.getPath());
  -        assertEquals(new LocationImpl(r), as.getLocation());
  +        assertEquals(new AnnotationLocation(r, l.toString()), as.getLocation());
           assertEquals("globalStylesheet", as.getPropertyName());
       }
   }
  
  
  
  1.3       +1 -1      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.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestInjectComponentAnnotationWorker.java	15 Jun 2005 13:34:31 -0000	1.2
  +++ TestInjectComponentAnnotationWorker.java	2 Jul 2005 22:51:24 -0000	1.3
  @@ -47,7 +47,7 @@
   
           InjectComponentAnnotationWorker worker = new InjectComponentAnnotationWorker(delegate);
   
  -        worker.performEnhancement(op, spec, findMethod(AnnotatedPage.class, "getFredField"));
  +        worker.performEnhancement(op, spec, findMethod(AnnotatedPage.class, "getFredField"), null);
   
           verifyControls();
       }
  
  
  
  1.3       +1 -1      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.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestInjectStateAnnotationWorker.java	15 Jun 2005 13:34:31 -0000	1.2
  +++ TestInjectStateAnnotationWorker.java	2 Jul 2005 22:51:24 -0000	1.3
  @@ -48,7 +48,7 @@
   
           InjectStateAnnotationWorker worker = new InjectStateAnnotationWorker(delegate);
   
  -        worker.performEnhancement(op, spec, findMethod(AnnotatedPage.class, "getBarney"));
  +        worker.performEnhancement(op, spec, findMethod(AnnotatedPage.class, "getBarney"), null);
   
           verifyControls();
       }
  
  
  
  1.3       +8 -0      jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/BaseAnnotationTestCase.java
  
  Index: BaseAnnotationTestCase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/BaseAnnotationTestCase.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- BaseAnnotationTestCase.java	9 Jun 2005 22:53:48 -0000	1.2
  +++ BaseAnnotationTestCase.java	2 Jul 2005 22:51:24 -0000	1.3
  @@ -16,7 +16,10 @@
   
   import java.lang.reflect.Method;
   
  +import org.apache.hivemind.ClassResolver;
  +import org.apache.hivemind.Resource;
   import org.apache.hivemind.test.HiveMindTestCase;
  +import org.apache.hivemind.util.ClasspathResource;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.IComponentSpecification;
   
  @@ -49,4 +52,9 @@
           return (EnhancementOperation) newMock(EnhancementOperation.class);
       }
   
  +    protected Resource newResource(ClassResolver resolver, Class clazz)
  +    {
  +        return new ClasspathResource(resolver, clazz.getName().replace('.', '/'));
  +    }
  +
   }
  
  
  
  1.2       +4 -4      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.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestMessageAnnotationWorker.java	22 Jun 2005 12:47:22 -0000	1.1
  +++ TestMessageAnnotationWorker.java	2 Jul 2005 22:51:24 -0000	1.2
  @@ -69,7 +69,7 @@
   
           try
           {
  -            new MessageAnnotationWorker().performEnhancement(op, spec, method);
  +            new MessageAnnotationWorker().performEnhancement(op, spec, method, null);
               unreachable();
           }
           catch (ApplicationRuntimeException ex)
  @@ -98,7 +98,7 @@
   
           replayControls();
   
  -        new MessageAnnotationWorker().performEnhancement(op, spec, method);
  +        new MessageAnnotationWorker().performEnhancement(op, spec, method, null);
   
           verifyControls();
       }
  @@ -114,7 +114,7 @@
   
           replayControls();
   
  -        new MessageAnnotationWorker().performEnhancement(op, spec, method);
  +        new MessageAnnotationWorker().performEnhancement(op, spec, method, null);
   
           verifyControls();
       }
  @@ -130,7 +130,7 @@
       {
           try
           {
  -            new ComponentAnnotationWorker().addBinding(null, binding);
  +            new ComponentAnnotationWorker().addBinding(null, binding, null);
               unreachable();
           }
           catch (ApplicationRuntimeException ex)
  
  
  
  1.3       +1 -1      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.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestInjectAssetAnnotationWorker.java	15 Jun 2005 13:34:31 -0000	1.2
  +++ TestInjectAssetAnnotationWorker.java	2 Jul 2005 22:51:24 -0000	1.3
  @@ -50,7 +50,7 @@
   
           InjectAssetAnnotationWorker worker = new InjectAssetAnnotationWorker(delegate);
   
  -        worker.performEnhancement(op, spec, m);
  +        worker.performEnhancement(op, spec, m, null);
   
           verifyControls();
       }
  
  
  
  1.3       +9 -6      jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestBeanAnnotationWorker.java
  
  Index: TestBeanAnnotationWorker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/annotations/src/test/org/apache/tapestry/annotations/TestBeanAnnotationWorker.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestBeanAnnotationWorker.java	15 Jun 2005 13:34:31 -0000	1.2
  +++ TestBeanAnnotationWorker.java	2 Jul 2005 22:51:24 -0000	1.3
  @@ -18,6 +18,7 @@
   import java.util.HashMap;
   import java.util.List;
   
  +import org.apache.hivemind.Location;
   import org.apache.tapestry.bean.LightweightBeanInitializer;
   import org.apache.tapestry.enhance.EnhancementOperation;
   import org.apache.tapestry.spec.BeanLifecycle;
  @@ -37,6 +38,7 @@
   {
       public void testBeanClassSpecified()
       {
  +        Location l = newLocation();
           EnhancementOperation op = newOp();
           IComponentSpecification spec = new ComponentSpecification();
   
  @@ -44,7 +46,7 @@
   
           replayControls();
   
  -        new BeanAnnotationWorker().performEnhancement(op, spec, m);
  +        new BeanAnnotationWorker().performEnhancement(op, spec, m, l);
   
           verifyControls();
   
  @@ -53,7 +55,7 @@
           assertEquals("mapBean", bs.getPropertyName());
           assertEquals(HashMap.class.getName(), bs.getClassName());
           assertEquals(BeanLifecycle.REQUEST, bs.getLifecycle());
  -        assertNull(bs.getLocation());
  +        assertSame(l, bs.getLocation());
           assertNull(bs.getInitializers());
       }
   
  @@ -70,6 +72,7 @@
   
       public void testBeanClassNotSpecified()
       {
  +        Location l = newLocation();
           EnhancementOperation op = newOp("hashMapBean", HashMap.class);
           IComponentSpecification spec = new ComponentSpecification();
   
  @@ -77,7 +80,7 @@
   
           replayControls();
   
  -        new BeanAnnotationWorker().performEnhancement(op, spec, m);
  +        new BeanAnnotationWorker().performEnhancement(op, spec, m, l);
   
           verifyControls();
   
  @@ -86,7 +89,7 @@
           assertEquals("hashMapBean", bs.getPropertyName());
           assertEquals(HashMap.class.getName(), bs.getClassName());
           assertEquals(BeanLifecycle.REQUEST, bs.getLifecycle());
  -        assertNull(bs.getLocation());
  +        assertSame(l, bs.getLocation());
           assertNull(bs.getInitializers());
       }
   
  @@ -99,7 +102,7 @@
   
           replayControls();
   
  -        new BeanAnnotationWorker().performEnhancement(op, spec, m);
  +        new BeanAnnotationWorker().performEnhancement(op, spec, m, null);
   
           verifyControls();
   
  @@ -120,7 +123,7 @@
   
           replayControls();
   
  -        new BeanAnnotationWorker().performEnhancement(op, spec, m);
  +        new BeanAnnotationWorker().performEnhancement(op, spec, m, null);
   
           verifyControls();
   
  
  
  
  1.19      +1 -0      jakarta-tapestry/src/documentation/content/xdocs/links.ent
  
  Index: links.ent
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/src/documentation/content/xdocs/links.ent,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- links.ent	27 Jun 2005 04:06:54 -0000	1.18
  +++ links.ent	2 Jul 2005 22:51:24 -0000	1.19
  @@ -182,6 +182,7 @@
   <!ENTITY Saxon 			'<link href="http://sf.net/projects/saxon/">Saxon</link>'>
   <!ENTITY Spring			'<link href="http://springframework.org/">Spring</link>'>
   <!ENTITY Struts 		'<link href="http://struts.apache.org/">Struts</link>'>
  +<!ENTITY Tomcat			'<link href="http://jakarta.apache.org/tomcat/">Tomcat</link>'>
   <!ENTITY WebWork 		'<link href="http://opensymphony.com/webwork/">WebWork</link>'>
   <!ENTITY Velocity 		'<link href="http://jakarta.apache.org/velocity/">Velocity</link>'>
   
  
  
  
  1.2       +10 -0     jakarta-tapestry/src/documentation/content/xdocs/QuickStart/tutorials-structure.aart
  
  Index: tutorials-structure.aart
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/src/documentation/content/xdocs/QuickStart/tutorials-structure.aart,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- tutorials-structure.aart	27 Jun 2005 04:06:54 -0000	1.1
  +++ tutorials-structure.aart	2 Jul 2005 22:51:24 -0000	1.2
  @@ -1,5 +1,15 @@
   Tutorials Directory
   |
  ++- directlink
   +- helloworld
   +- tapestry-libraries
  +|  |
  +|  +- common.xml
  +|  +- lib
  +|     |
  +|     +- web
  +|        |
  +|        +- bsf-2.3.0.jar
  +|        +- commons-codec-1.3.jar
  +|        +- . . .  
   +- . . .
  \ No newline at end of file
  
  
  
  1.4       +31 -17    jakarta-tapestry/src/documentation/content/xdocs/QuickStart/index.xml
  
  Index: index.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/src/documentation/content/xdocs/QuickStart/index.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- index.xml	27 Jun 2005 04:40:29 -0000	1.3
  +++ index.xml	2 Jul 2005 22:51:24 -0000	1.4
  @@ -50,29 +50,20 @@
   </p>
     
   <p>
  -The examples all share a set of libraries (the Tapestry framework, its dependencies, the
  -contrib library, and the annotations library).  These are available from <link href="&quickstart-download-url;">&quickstart-download-url;</link>
  -as file tapestry-libraries.tar.gz.  Choose a directory to store the tutorials and expand the contents of this tarball; this will
  -create a directory, tapestry-libraries, with files and folders beneath it (especially, many JAR files
  -inside lib/web).
  +The source code for the all the tutorials are distributed inside a single tarbar: tapestry-tutorials.tar.gz, available
  +from <link href="&quickstart-download-url;">&quickstart-download-url;</link>.
   </p>  
  -
  -<figure src="tapestry-libraries.png" alt="Tapestry Libraries Directories"/>
  -  
  -</section>
  -
  -<section>
  -  <title>Tutorial Structure</title>
  -  
  +    
   <p>
   Each tutorial is its own project (in fact, it includes .project and .classpath files so that it may be
  -used inside &Eclipse;).  Each should be expanded inside your tutorials directory:
  +used inside &Eclipse;).  In addition, the tapestry-tutorials project contains the set of libraries
  +need by the applications: the Tapestry libraries and their dependencies.
   </p>
   
   <figure src="tutorials-structure.png" alt="Tutorial Workspace Structure"/>
   
   <p>
  -Each individual tutorial has the same structure:
  +Each tutorial project has the same structure:
   </p>
   
   <figure src="single-tutorial.png" alt="Single Tutorial Structure"/>
  @@ -90,7 +81,7 @@
   </p>
   
   <p>
  -The Ant <code>war</code> target will compile the Java source files, and create a WAR file containing
  +The Ant <code>war</code> target will compile the Java source files (stored in src/java), and create a WAR file containing
   the compiled classes (inside WEB-INF/classes), the contents of src/context, and all the dependencies (from tapestry-libraries)
   packaged inside WEB-INF/lib.  The file will be stored in the target folder, which is created
   as necessary, and is named after the project (i.e., target/helloworld.war).
  @@ -102,8 +93,31 @@
     <title>Building And Deploying</title>
     
   <p>
  -  Coming soon ...
  +To build a tutorial, simply change to its directory and execute <code>ant</code>:
  +</p>
  +
  +<source><![CDATA[
  +bash-2.05b$ ant
  +Buildfile: build.xml
  +
  +compile:
  +    [mkdir] Created dir: C:\workspace\directlink\target\classes
  +    [javac] Compiling 1 source file to C:\workspace\directlink\target\classes
  +    [javac] Note: C:\workspace\directlink\src\java\tutorials\directlink\pages\Home.java uses or overrides a deprecated API.
  +    [javac] Note: Recompile with -Xlint:deprecation for details.
  +
  +war:
  +      [war] Building war: C:\workspace\directlink\target\helloworld.war
  +
  +BUILD SUCCESSFUL
  +Total time: 8 seconds
  +bash-2.05b$
  +]]></source>
  +
  +<p>
  +The resulting WAR file is ready to be deployed into any servlet container such as &Jetty; or &Tomcat;.
   </p>
  +
     
   </section>
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org