You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by jk...@apache.org on 2014/05/17 14:14:36 UTC

[1/2] git commit: TAP5-2266: extend support for HTML content inside parameter JavaDoc

Repository: tapestry-5
Updated Branches:
  refs/heads/master c44abfd6a -> fd3c9e6b7


TAP5-2266: extend support for HTML content inside parameter JavaDoc


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/bb309644
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/bb309644
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/bb309644

Branch: refs/heads/master
Commit: bb3096442155f68a69cee0b709717c09287bdea9
Parents: c44abfd
Author: Jochen Kemnade <jk...@apache.org>
Authored: Sat May 17 13:57:30 2014 +0200
Committer: Jochen Kemnade <jk...@apache.org>
Committed: Sat May 17 14:05:30 2014 +0200

----------------------------------------------------------------------
 .../tapestry5/corelib/components/DevTool.java   |   2 +-
 tapestry-javadoc/build.gradle                   |   3 +
 .../tapestry5/javadoc/ParameterDescription.java |  55 ++++++--
 .../javadoc/ParameterDescriptionSpec.groovy     | 125 +++++++++++++++++++
 4 files changed, 172 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/bb309644/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DevTool.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DevTool.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DevTool.java
index 320e1cd..0954e66 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DevTool.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DevTool.java
@@ -58,7 +58,7 @@ public class DevTool
 
     /**
      * If true, then the DevTool modifies its markup so as to work within a Bootstrap 3 NavBar. This renders
-     * the component as an {@code <li>} (instead of a {@code <div>}), and removes the "btn" CSS classes.
+     * the component as a {@code <li>} (instead of a {@code <div>}), and removes the "btn" CSS classes.
      */
     @Parameter
     private boolean navbar;

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/bb309644/tapestry-javadoc/build.gradle
----------------------------------------------------------------------
diff --git a/tapestry-javadoc/build.gradle b/tapestry-javadoc/build.gradle
index 032114a..efc6f9d 100644
--- a/tapestry-javadoc/build.gradle
+++ b/tapestry-javadoc/build.gradle
@@ -4,6 +4,9 @@ dependencies {
   compile project(':tapestry-core')
   compile "commons-lang:commons-lang:2.6"
   compile files(getTools())
+  
+  testCompile "org.spockframework:spock-core:${versions.spock}"
+  
 }
 
 /** Returns the tools.jar/classes.jar of the Java runtime. */

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/bb309644/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ParameterDescription.java
----------------------------------------------------------------------
diff --git a/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ParameterDescription.java b/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ParameterDescription.java
index a60f8a7..ff8bc11 100644
--- a/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ParameterDescription.java
+++ b/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ParameterDescription.java
@@ -14,14 +14,18 @@
 
 package org.apache.tapestry5.javadoc;
 
-import com.sun.javadoc.FieldDoc;
-import com.sun.javadoc.SeeTag;
-import com.sun.javadoc.Tag;
-
 import java.io.IOException;
+import java.util.Locale;
+import java.util.Set;
+import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+
+import com.sun.javadoc.FieldDoc;
+import com.sun.javadoc.SeeTag;
+import com.sun.javadoc.Tag;
 
 public class ParameterDescription
 {
@@ -45,10 +49,12 @@ public class ParameterDescription
 
     public final boolean deprecated;
 
-    private static final Pattern STRIPPER = Pattern.compile("(<.*?>|&.*?;)", Pattern.DOTALL);
+    private static final Pattern SPECIAL_CONTENT = Pattern.compile("(?:</?(\\p{Alpha}+)>)|(?:&\\p{Alpha}+;)");
+    private static final Set<String> PASS_THROUGH_TAGS = CollectionFactory.newSet("b", "em", "i", "code", "strong");
 
-    public ParameterDescription(FieldDoc fieldDoc, String name, String type, String defaultValue, String defaultPrefix,
-                                boolean required, boolean allowNull, boolean cache, String since, boolean deprecated)
+
+    public ParameterDescription(final FieldDoc fieldDoc, final String name, final String type, final String defaultValue, final String defaultPrefix,
+            final boolean required, final boolean allowNull, final boolean cache, final String since, final boolean deprecated)
     {
         this.field = fieldDoc;
         this.name = name;
@@ -76,7 +82,7 @@ public class ParameterDescription
         {
             if (tag.name().equals("Text"))
             {
-                builder.append(tag.text());
+                appendContentSafe(builder, tag.text());
                 continue;
             }
 
@@ -87,17 +93,17 @@ public class ParameterDescription
                 String label = seeTag.label();
                 if (label != null && !label.equals(""))
                 {
-                    builder.append(label);
+                    builder.append(StringEscapeUtils.escapeHtml(label));
                     continue;
                 }
 
                 if (seeTag.referencedClassName() != null)
-                    builder.append(seeTag.referencedClassName());
+                    builder.append(StringEscapeUtils.escapeHtml(seeTag.referencedClassName()));
 
                 if (seeTag.referencedMemberName() != null)
                 {
                     builder.append("#");
-                    builder.append(seeTag.referencedMemberName());
+                    builder.append(StringEscapeUtils.escapeHtml(seeTag.referencedMemberName()));
                 }
             }
             else if (tag.name().equals("@code"))
@@ -114,6 +120,31 @@ public class ParameterDescription
 
         // Remove any simple open or close tags found in the text, as well as any XML entities.
 
-        return STRIPPER.matcher(text).replaceAll("").trim();
+        return text.trim();
+    }
+
+    private static void appendContentSafe(final StringBuilder sb, final String string){
+        Matcher m = SPECIAL_CONTENT.matcher(string);
+        int index = 0;
+        while (index < string.length()){
+            boolean match = m.find(index);
+            if (match){
+                if (index != m.start()){
+                    sb.append(StringEscapeUtils.escapeHtml(string.substring(index, m.start())));
+                }
+                String tagName = m.group(1);
+                if (tagName!= null){
+                    if(PASS_THROUGH_TAGS.contains(tagName.toLowerCase(Locale.US))){
+                        sb.append(m.group());
+                    }
+                }else{
+                    sb.append(m.group());
+                }
+                index = m.end();
+            }else{
+                sb.append(StringEscapeUtils.escapeHtml(string.substring(index)));
+                break;
+            }
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/bb309644/tapestry-javadoc/src/test/groovy/org/apache/tapestry5/javadoc/ParameterDescriptionSpec.groovy
----------------------------------------------------------------------
diff --git a/tapestry-javadoc/src/test/groovy/org/apache/tapestry5/javadoc/ParameterDescriptionSpec.groovy b/tapestry-javadoc/src/test/groovy/org/apache/tapestry5/javadoc/ParameterDescriptionSpec.groovy
new file mode 100644
index 0000000..008d1b1
--- /dev/null
+++ b/tapestry-javadoc/src/test/groovy/org/apache/tapestry5/javadoc/ParameterDescriptionSpec.groovy
@@ -0,0 +1,125 @@
+package org.apache.tapestry5.javadoc
+
+import spock.lang.Specification
+
+import com.sun.javadoc.FieldDoc
+import com.sun.tools.doclets.internal.toolkit.util.TextTag
+import com.sun.tools.javadoc.TagImpl
+
+
+class ParameterDescriptionSpec extends Specification {
+
+	def "Parameter description without embedded tags is passed through"(){
+		setup:
+		FieldDoc fieldDoc = Mock()
+		def inlineTags = [
+			new TextTag(null, "Plain text")
+		]
+		ParameterDescription parameterDescription = new ParameterDescription(fieldDoc, "parameter", "String", "value", "literal", false, true, false, "1", false)
+		when:
+		def extracted = parameterDescription.extractDescription()
+		then:
+		1 * fieldDoc.inlineTags() >> inlineTags
+		extracted == "Plain text"
+	}
+
+	def "Embedded code tags are turned into HTML <code> elements"(){
+		setup:
+		FieldDoc fieldDoc = Mock()
+		def inlineTags = [
+			new TagImpl(null, "@code", "blah")
+		]
+		ParameterDescription parameterDescription = new ParameterDescription(fieldDoc, "parameter", "String", "value", "literal", false, true, false, "1", false)
+		when:
+		def extracted = parameterDescription.extractDescription()
+		then:
+		1 * fieldDoc.inlineTags() >> inlineTags
+		extracted == "<code>blah</code>"
+	}
+
+	// TAP5-2266
+	def "HTML in embedded code tags is escaped"(){
+		setup:
+		FieldDoc fieldDoc = Mock()
+		def inlineTags = [
+			new TextTag(null, "This renders the component as a "),
+			new TagImpl(null, "@code", "<li>"),
+			new TextTag(null, " (instead of a "),
+			new TagImpl(null, "@code", "<div>"),
+			new TextTag(null, ")")
+		]
+		ParameterDescription parameterDescription = new ParameterDescription(fieldDoc, "parameter", "String", "value", "literal", false, true, false, "1", false)
+		when:
+		def extracted = parameterDescription.extractDescription()
+		then:
+		1 * fieldDoc.inlineTags() >> inlineTags
+		extracted == "This renders the component as a <code>&lt;li&gt;</code> (instead of a <code>&lt;div&gt;</code>)"
+	}
+
+
+	def "Characters with special meaning are escaped"(){
+		setup:
+		FieldDoc fieldDoc = Mock()
+		def inlineTags = [
+			new TextTag(null, "Javadoc with < character")
+		]
+		ParameterDescription parameterDescription = new ParameterDescription(fieldDoc, "parameter", "String", "value", "literal", false, true, false, "1", false)
+		when:
+		def extracted = parameterDescription.extractDescription()
+		then:
+		1 * fieldDoc.inlineTags() >> inlineTags
+		extracted == "Javadoc with &lt; character"
+	}
+
+	def "Entities in Javadoc are left alone"(){
+		setup:
+		FieldDoc fieldDoc = Mock()
+		def inlineTags = [
+			new TextTag(null, "Text &amp; entity")
+		]
+		ParameterDescription parameterDescription = new ParameterDescription(fieldDoc, "parameter", "String", "value", "literal", false, true, false, "1", false)
+		when:
+		def extracted = parameterDescription.extractDescription()
+		then:
+		1 * fieldDoc.inlineTags() >> inlineTags
+		extracted == "Text &amp; entity"
+	}
+
+	def "Un-safe tags in Javadoc are removed"(){
+		setup:
+		FieldDoc fieldDoc = Mock()
+		def inlineTags = [
+			new TextTag(null, "We don't <br>want new lines or</td> table stuff")
+		]
+		ParameterDescription parameterDescription = new ParameterDescription(fieldDoc, "parameter", "String", "value", "literal", false, true, false, "1", false)
+		when:
+		def extracted = parameterDescription.extractDescription()
+		then:
+		1 * fieldDoc.inlineTags() >> inlineTags
+		extracted == "We don't want new lines or table stuff"
+	}
+
+	def "#src in Javadoc becomes #target in HTML"(){
+		setup:
+		FieldDoc fieldDoc = Mock()
+		def inlineTags = [
+			new TextTag(null, src)
+		]
+		ParameterDescription parameterDescription = new ParameterDescription(fieldDoc, "parameter", "String", "value", "literal", false, true, false, "1", false)
+		when:
+		def extracted = parameterDescription.extractDescription()
+		then:
+		1 * fieldDoc.inlineTags() >> inlineTags
+		extracted == target
+		where:
+		src     | target
+		"&"     | "&amp;"
+		"&amp;" | "&amp;"
+		"<"     | "&lt;"
+		"<b>"   | "<b>"
+
+	}
+
+
+
+}


[2/2] git commit: fix some typos

Posted by jk...@apache.org.
fix some typos


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/fd3c9e6b
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/fd3c9e6b
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/fd3c9e6b

Branch: refs/heads/master
Commit: fd3c9e6b72670e7fe7f5d76f5433d4ac03e067cf
Parents: bb30964
Author: Jochen Kemnade <jk...@apache.org>
Authored: Sat May 17 14:13:49 2014 +0200
Committer: Jochen Kemnade <jk...@apache.org>
Committed: Sat May 17 14:13:49 2014 +0200

----------------------------------------------------------------------
 .../archetype-resources/src/main/java/services/AppModule.java  | 2 +-
 .../java/org/apache/tapestry5/corelib/components/Label.java    | 2 +-
 .../java/org/apache/tapestry5/corelib/components/Zone.java     | 2 +-
 .../apache/tapestry5/internal/pageload/ComponentAssembler.java | 2 +-
 .../apache/tapestry5/ioc/internal/ServiceProxyProvider.java    | 2 +-
 .../org/apache/tapestry5/ioc/internal/util/GenericsUtils.java  | 6 +++---
 6 files changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fd3c9e6b/quickstart/filtered/archetype-resources/src/main/java/services/AppModule.java
----------------------------------------------------------------------
diff --git a/quickstart/filtered/archetype-resources/src/main/java/services/AppModule.java b/quickstart/filtered/archetype-resources/src/main/java/services/AppModule.java
index c42293e..b2994d6 100644
--- a/quickstart/filtered/archetype-resources/src/main/java/services/AppModule.java
+++ b/quickstart/filtered/archetype-resources/src/main/java/services/AppModule.java
@@ -35,7 +35,7 @@ public class AppModule
     public static void contributeFactoryDefaults(
             MappedConfiguration<String, Object> configuration)
     {
-        // The application version is incorprated into URLs for most assets. Web
+        // The application version is incorporated into URLs for most assets. Web
         // browsers will cache assets because of the far future expires header.
     	// If existing assets change (or if the Tapestry version changes) you
     	// should also change this number, to force the browser to download new

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fd3c9e6b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Label.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Label.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Label.java
index b030929..2b15eeb 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Label.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Label.java
@@ -27,7 +27,7 @@ import org.apache.tapestry5.ioc.internal.util.InternalUtils;
  * Generates a &lt;label&gt; element for a particular field. It writes the CSS class "control-label".
  * <p/>
  * A Label will render its body, if it has one. However, in most cases it will not have a body, and will render its
- * {@linkplain org.apache.tapestry5.Field#getLabel() field's label} as it's body. Remember, however, that it is the
+ * {@linkplain org.apache.tapestry5.Field#getLabel() field's label} as its body. Remember, however, that it is the
  * field label that will be used in any error messages. The Label component allows for client- and server-side
  * validation error decorations.
  *

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fd3c9e6b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java
index 141663f..f79b286 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java
@@ -41,7 +41,7 @@ import org.slf4j.Logger;
  * content on the client side. Often, re-rendering the Zone's {@linkplain #getBody() body} is useful. Multiple
  * client-side zones may be updated via the {@link org.apache.tapestry5.services.ajax.AjaxResponseRenderer} service.
  * <p/>
- * You will often want to specify the id parameter of the Zone, in addition to it's Tapestry component id; this "locks
+ * You will often want to specify the id parameter of the Zone, in addition to its Tapestry component id; this "locks
  * down" the client-side id, so the same value is used even in later partial renders of the page (essential if the Zone
  * is nested inside another Zone). When you specify the client-side id, it is used exactly as provided (meaning that you
  * are responsible for ensuring that there will not be an id conflict even in the face of multiple partial renders of

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fd3c9e6b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java
index f99d63c..a5627d3 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java
@@ -95,7 +95,7 @@ interface ComponentAssembler
      * @param mixins
      *            mixins for the component (as defined in the template)
      * @param location
-     *            location of the component (i.e., it's location in the container template)
+     *            location of the component (i.e., its location in the container template)
      * @return assembler for the component
      */
     EmbeddedComponentAssembler createEmbeddedAssembler(String embeddedId, String componentClassName,

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fd3c9e6b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceProxyProvider.java
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceProxyProvider.java b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceProxyProvider.java
index 83eec6b..8a5ed62 100644
--- a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceProxyProvider.java
+++ b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceProxyProvider.java
@@ -21,7 +21,7 @@ package org.apache.tapestry5.ioc.internal;
 public interface ServiceProxyProvider
 {
     /**
-     * Look up the service and return it's proxy.
+     * Look up the service and return its proxy.
      *
      * @param serviceId the id of the service to obtain
      * @return the service proxy

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fd3c9e6b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
index d0a93c4..5fd8c24 100644
--- a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
+++ b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
@@ -314,7 +314,7 @@ public class GenericsUtils
     }
 
     /**
-     * Method to resolve a TypeVariable to it's most
+     * Method to resolve a TypeVariable to its most
      * <a href="http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#112582">reifiable</a> form.
      * <p/>
      * <p/>
@@ -336,7 +336,7 @@ public class GenericsUtils
      * <p/>
      * When extracting Types we only have to consider the superclass hierarchy and not the interfaces implemented by
      * the class. When a class implements a generic interface it must provide types for the interface and any generic
-     * methods implemented from the interface will be re-defined by the class with it's generic type variables.
+     * methods implemented from the interface will be re-defined by the class with its generic type variables.
      *
      * @param typeVariable   - the type variable to resolve.
      * @param containingType - the shallowest class in the class hierarchy (furthest from Object) where typeVariable is defined.
@@ -588,7 +588,7 @@ public class GenericsUtils
      * the actual type.
      *
      * @param typeVariable - the type variable in question.
-     * @return the index of the type variable in it's declaring class/method/constructor's type parameters.
+     * @return the index of the type variable in its declaring class/method/constructor's type parameters.
      */
     private static int getTypeVariableIndex(final TypeVariable typeVariable)
     {


[2/2] git commit: fix some typos

Posted by jk...@apache.org.
fix some typos


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/fd3c9e6b
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/fd3c9e6b
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/fd3c9e6b

Branch: refs/heads/master
Commit: fd3c9e6b72670e7fe7f5d76f5433d4ac03e067cf
Parents: bb30964
Author: Jochen Kemnade <jk...@apache.org>
Authored: Sat May 17 14:13:49 2014 +0200
Committer: Jochen Kemnade <jk...@apache.org>
Committed: Sat May 17 14:13:49 2014 +0200

----------------------------------------------------------------------
 .../archetype-resources/src/main/java/services/AppModule.java  | 2 +-
 .../java/org/apache/tapestry5/corelib/components/Label.java    | 2 +-
 .../java/org/apache/tapestry5/corelib/components/Zone.java     | 2 +-
 .../apache/tapestry5/internal/pageload/ComponentAssembler.java | 2 +-
 .../apache/tapestry5/ioc/internal/ServiceProxyProvider.java    | 2 +-
 .../org/apache/tapestry5/ioc/internal/util/GenericsUtils.java  | 6 +++---
 6 files changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fd3c9e6b/quickstart/filtered/archetype-resources/src/main/java/services/AppModule.java
----------------------------------------------------------------------
diff --git a/quickstart/filtered/archetype-resources/src/main/java/services/AppModule.java b/quickstart/filtered/archetype-resources/src/main/java/services/AppModule.java
index c42293e..b2994d6 100644
--- a/quickstart/filtered/archetype-resources/src/main/java/services/AppModule.java
+++ b/quickstart/filtered/archetype-resources/src/main/java/services/AppModule.java
@@ -35,7 +35,7 @@ public class AppModule
     public static void contributeFactoryDefaults(
             MappedConfiguration<String, Object> configuration)
     {
-        // The application version is incorprated into URLs for most assets. Web
+        // The application version is incorporated into URLs for most assets. Web
         // browsers will cache assets because of the far future expires header.
     	// If existing assets change (or if the Tapestry version changes) you
     	// should also change this number, to force the browser to download new

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fd3c9e6b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Label.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Label.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Label.java
index b030929..2b15eeb 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Label.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Label.java
@@ -27,7 +27,7 @@ import org.apache.tapestry5.ioc.internal.util.InternalUtils;
  * Generates a &lt;label&gt; element for a particular field. It writes the CSS class "control-label".
  * <p/>
  * A Label will render its body, if it has one. However, in most cases it will not have a body, and will render its
- * {@linkplain org.apache.tapestry5.Field#getLabel() field's label} as it's body. Remember, however, that it is the
+ * {@linkplain org.apache.tapestry5.Field#getLabel() field's label} as its body. Remember, however, that it is the
  * field label that will be used in any error messages. The Label component allows for client- and server-side
  * validation error decorations.
  *

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fd3c9e6b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java
index 141663f..f79b286 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java
@@ -41,7 +41,7 @@ import org.slf4j.Logger;
  * content on the client side. Often, re-rendering the Zone's {@linkplain #getBody() body} is useful. Multiple
  * client-side zones may be updated via the {@link org.apache.tapestry5.services.ajax.AjaxResponseRenderer} service.
  * <p/>
- * You will often want to specify the id parameter of the Zone, in addition to it's Tapestry component id; this "locks
+ * You will often want to specify the id parameter of the Zone, in addition to its Tapestry component id; this "locks
  * down" the client-side id, so the same value is used even in later partial renders of the page (essential if the Zone
  * is nested inside another Zone). When you specify the client-side id, it is used exactly as provided (meaning that you
  * are responsible for ensuring that there will not be an id conflict even in the face of multiple partial renders of

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fd3c9e6b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java
index f99d63c..a5627d3 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java
@@ -95,7 +95,7 @@ interface ComponentAssembler
      * @param mixins
      *            mixins for the component (as defined in the template)
      * @param location
-     *            location of the component (i.e., it's location in the container template)
+     *            location of the component (i.e., its location in the container template)
      * @return assembler for the component
      */
     EmbeddedComponentAssembler createEmbeddedAssembler(String embeddedId, String componentClassName,

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fd3c9e6b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceProxyProvider.java
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceProxyProvider.java b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceProxyProvider.java
index 83eec6b..8a5ed62 100644
--- a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceProxyProvider.java
+++ b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceProxyProvider.java
@@ -21,7 +21,7 @@ package org.apache.tapestry5.ioc.internal;
 public interface ServiceProxyProvider
 {
     /**
-     * Look up the service and return it's proxy.
+     * Look up the service and return its proxy.
      *
      * @param serviceId the id of the service to obtain
      * @return the service proxy

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fd3c9e6b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
index d0a93c4..5fd8c24 100644
--- a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
+++ b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
@@ -314,7 +314,7 @@ public class GenericsUtils
     }
 
     /**
-     * Method to resolve a TypeVariable to it's most
+     * Method to resolve a TypeVariable to its most
      * <a href="http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#112582">reifiable</a> form.
      * <p/>
      * <p/>
@@ -336,7 +336,7 @@ public class GenericsUtils
      * <p/>
      * When extracting Types we only have to consider the superclass hierarchy and not the interfaces implemented by
      * the class. When a class implements a generic interface it must provide types for the interface and any generic
-     * methods implemented from the interface will be re-defined by the class with it's generic type variables.
+     * methods implemented from the interface will be re-defined by the class with its generic type variables.
      *
      * @param typeVariable   - the type variable to resolve.
      * @param containingType - the shallowest class in the class hierarchy (furthest from Object) where typeVariable is defined.
@@ -588,7 +588,7 @@ public class GenericsUtils
      * the actual type.
      *
      * @param typeVariable - the type variable in question.
-     * @return the index of the type variable in it's declaring class/method/constructor's type parameters.
+     * @return the index of the type variable in its declaring class/method/constructor's type parameters.
      */
     private static int getTypeVariableIndex(final TypeVariable typeVariable)
     {