add jdiff build packages, update build.properties for struts2, update build.xml to include a jdiff target & fix up javadoc target, add a new uploadApiDiffs script, update uploadJavadocs script.

git-svn-id: https://google-guice.googlecode.com/svn/trunk@1346 d779f126-a31b-0410-b53b-1d3aecad763e
diff --git a/build.properties b/build.properties
index 57a175e..0805cec 100644
--- a/build.properties
+++ b/build.properties
@@ -11,6 +11,7 @@
 privatemodules.src.dir=extensions/privatemodules/src
 lifecycle.src.dir=extensions/lifecycle/src
 persist.src.dir=extensions/persist/src
+struts2.src.dir=extensions/struts2/src
 build.dir=build
 javadoc.packagenames=com.google.inject,com.google.inject.spi,\
   com.google.inject.matcher,\
diff --git a/build.xml b/build.xml
index c913e9d..e662a5b 100644
--- a/build.xml
+++ b/build.xml
@@ -103,13 +103,20 @@
       </syspropertyset>
     </java>
   </target>
-  
-  <target name="javadoc">
+	
+  <property name="old.api" value="2.0"/>
+  <property name="new.api" value="3.0"/>
+  <target name="jdiff">
+  	<property name="jdiff.home" value="lib/build/jdiff"/>
+  	<property name="jdiff.tmp" value="build/docs/latest-api-diffs"/>
+  	<delete dir="${jdiff.tmp}"/>
+  	<mkdir dir="${jdiff.tmp}"/>
+  	
+  	<!-- Generate API for current version. -->
     <javadoc packagenames="com.google.*"
-             destdir="build/docs"
-    	     docletpath="lib/build/doclava.jar"
-             bootclasspath="${java.home}/lib/rt.jar"
-             maxmemory="512M">
+	         docletpath="${jdiff.home}/jdiff.jar${path.separator}${jdiff.home}/xerces.jar"
+             maxmemory="512M"
+    	     classpath="lib/javax.inject.jar${path.separator}lib/aopalliance.jar">
       <fileset dir="${src.dir}" defaultexcludes="yes">
         <include name="com/google/**"/>
         <exclude name="com/google/inject/internal/**"/>
@@ -122,13 +129,64 @@
       <fileset dir="${throwingproviders.src.dir}"/>
       <fileset dir="${multibindings.src.dir}"/>
       <fileset dir="${persist.src.dir}"/>
+      <fileset dir="${struts2.src.dir}"/>
+
+      <doclet name="jdiff.JDiff"
+              path="${jdiff.home}/jdiff.jar:${jdiff.home}/xerces.jar">
+        <param name="-apidir" value="${jdiff.tmp}" />
+        <param name="-apiname" value="${new.api}" />
+      </doclet>
+    </javadoc>
+
+  	<!-- Do a diff against the previous version. -->
+	<javadoc packagenames="com.google.*"
+	         destdir="${jdiff.tmp}"
+		     docletpath="${jdiff.home}/jdiff.jar${path.separator}${jdiff.home}/xerces.jar"
+	         maxmemory="512M"
+		     sourcefiles="${jdiff.home}/Null.java"
+  	         classpath="lib/javax.inject.jar${path.separator}lib/aopalliance.jar">
+	  <doclet name="jdiff.JDiff">
+	  	<param name="-oldapi" value="${old.api}"/>
+	  	<param name="-oldapidir" value="latest-api-diffs"/>	  	
+	  	<param name="-javadocold" value="http://google-guice.googlecode.com/svn/trunk/latest-api-diffs/${old.api}/javadoc/"/>
+	  	<param name="-newapi" value="${new.api}"/>
+	    <param name="-newapidir" value="${jdiff.tmp}"/>
+	  	<param name="-javadocnew" value="http://google-guice.googlecode.com/svn/trunk/latest-api-diffs/${new.api}/javadoc/"/>
+	  	<param name="-stats"/>
+	  	<param name="-docchanges"/>
+	  </doclet>
+	</javadoc>
+  </target>
+  
+  <target name="javadoc">
+    <javadoc packagenames="com.google.*"
+             destdir="build/docs"
+    	     docletpath="lib/build/doclava.jar"
+             bootclasspath="${java.home}/lib/rt.jar"
+             maxmemory="512M"
+    	     classpath="lib/javax.inject.jar${path.separator}lib/aopalliance.jar">
+      <fileset dir="${src.dir}" defaultexcludes="yes">
+        <include name="com/google/**"/>
+        <exclude name="com/google/inject/internal/**"/>
+      </fileset>
+      <fileset dir="${servlet.src.dir}"/>
+      <fileset dir="${spring.src.dir}"/>
+      <fileset dir="${assistedinject.src.dir}"/>
+      <fileset dir="${jmx.src.dir}"/>
+      <fileset dir="${jndi.src.dir}"/>
+      <fileset dir="${throwingproviders.src.dir}"/>
+      <fileset dir="${multibindings.src.dir}"/>
+      <fileset dir="${persist.src.dir}"/>
+      <!-- TODO: this breaks Doclava for some reason 
+      <fileset dir="${struts2.src.dir}"/> -->
 
       <doclet name="com.google.doclava.Doclava">
         <param name="-hdf"/> <param name="project.name"/> <param name="Guice"/>
         <param name="-since"/> <param name="lib/build/guice-1.0.xml"/> <param name="Guice_1.0" />
-        <param name="-since"/> <param name="lib/build/guice-2.0.xml"/> <param name="Guice_2.0" />
-        <param name="-apiversion" value="Guice_3.0"/>
+        <param name="-since"/> <param name="lib/build/guice-2.0.xml"/> <param name="Guice_2.0" /> 
+        <param name="-apiversion" value="Guice_${new.api}"/>
         <param name="-assetsdir" value="javadoc/assets"/>
+      	<param name="-apixml" value="build/docs/guice-${new.api}.xml"/>
         <!-- TODO: fix doclava federation
           http://aopalliance.sourceforge.net/doc
           http://www.springframework.org/docs/api/
diff --git a/lib/build/jdiff/Null.java b/lib/build/jdiff/Null.java
new file mode 100755
index 0000000..019b718
--- /dev/null
+++ b/lib/build/jdiff/Null.java
@@ -0,0 +1,9 @@
+/** 
+ * This class is used only as a "null" argument for Javadoc when comparing
+ * two API files. Javadoc has to have a package, .java or .class file as an 
+ * argument, even though JDiff doesn't use it.
+ */
+public class Null {
+    public Null() {
+    }
+}
diff --git a/lib/build/jdiff/background.gif b/lib/build/jdiff/background.gif
new file mode 100755
index 0000000..e6d2dda
--- /dev/null
+++ b/lib/build/jdiff/background.gif
Binary files differ
diff --git a/lib/build/jdiff/black.gif b/lib/build/jdiff/black.gif
new file mode 100755
index 0000000..185d95b
--- /dev/null
+++ b/lib/build/jdiff/black.gif
Binary files differ
diff --git a/lib/build/jdiff/jdiff.jar b/lib/build/jdiff/jdiff.jar
new file mode 100755
index 0000000..5fc7ed0
--- /dev/null
+++ b/lib/build/jdiff/jdiff.jar
Binary files differ
diff --git a/lib/build/jdiff/new.gif b/lib/build/jdiff/new.gif
new file mode 100755
index 0000000..c0ef7a4
--- /dev/null
+++ b/lib/build/jdiff/new.gif
Binary files differ
diff --git a/lib/build/jdiff/xerces.jar b/lib/build/jdiff/xerces.jar
new file mode 100755
index 0000000..e75d486
--- /dev/null
+++ b/lib/build/jdiff/xerces.jar
Binary files differ
diff --git a/uploadApiDiffs.sh b/uploadApiDiffs.sh
new file mode 100644
index 0000000..124d870
--- /dev/null
+++ b/uploadApiDiffs.sh
@@ -0,0 +1,20 @@
+rm -rf build/docs
+CV=3.0
+
+# remove old api-diffs
+svn rm latest-api-diffs/$CV
+svn ci -m "Removed old $CV api diffs." latest-api-diffs/$CV
+
+# create new api-diffs
+ant jdiff
+cp -r build/docs/latest-api-diffs latest-api-diffs/$CV
+cp lib/build/jdiff/*.gif latest-api-diffs/$CV
+mv latest-api-diffs/$CV/$CV.xml latest-api-diffs
+
+# capture current javadoc snapshot
+ant javadoc
+cp -r build/docs/javadoc latest-api-diffs/$CV/javadoc
+
+# commit changes
+svn add latest-api-diffs/$CV
+svn ci -m "Added updated $CV api diffs." latest-api-diffs/$CV
diff --git a/uploadJavadocs.sh b/uploadJavadocs.sh
index 10af2b5..4ca1ab5 100755
--- a/uploadJavadocs.sh
+++ b/uploadJavadocs.sh
@@ -1,7 +1,9 @@
+rm -rf build/docs
 svn rm latest-javadoc javadoc
-svn ci -m "Removed old Javadocs."
+svn ci -m "Removed old Javadocs." latest-javadoc javadoc
 ant javadoc
-mv build/docs/javadoc latest-javadoc
+cp -r build/docs/javadoc latest-javadoc
 cp -r latest-javadoc javadoc
-svn add latest-javadoc javadoc
-svn ci -m "Added updated Javadocs."
+mv build/docs/guice-*.xml lib/build
+svn add latest-javadoc javadoc lib/build/guice-*.xml
+svn ci -m "Added updated Javadocs." latest-javadoc javadoc lib/build/guice-*.xml