aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2017-12-06 16:30:46 -0700
committerJeff Sharkey <jsharkey@android.com>2017-12-06 16:30:48 -0700
commit164061e4db869d7164e051a63bc2a07b2a0b5d55 (patch)
treeaf336689a048ef2326822960bda6e053d922d1e7 /src
parent74b7331c554fb0a4e55733589067edb96e51ea57 (diff)
downloadjdiff-164061e4db869d7164e051a63bc2a07b2a0b5d55.tar.gz
Emit redirection stubs for added classes.
Incoming links don't differentiate between added and changed classes, so emit a tiny stub HTML file to redirect to the full documentation. Change-Id: I550ef046d8055979d82eef1d8668d5dabbdfe922
Diffstat (limited to 'src')
-rwxr-xr-xsrc/jdiff/HTMLReportGenerator.java37
-rwxr-xr-xsrc/jdiff/PackageDiff.java12
2 files changed, 43 insertions, 6 deletions
diff --git a/src/jdiff/HTMLReportGenerator.java b/src/jdiff/HTMLReportGenerator.java
index f45e9ac..c0ca4ff 100755
--- a/src/jdiff/HTMLReportGenerator.java
+++ b/src/jdiff/HTMLReportGenerator.java
@@ -383,6 +383,10 @@ public class HTMLReportGenerator {
writeClassTableEntry(pkgName, className, 1, classAPI.isInterface_, classAPI.doc_, false);
}
writeTableEnd();
+ // Now emit a separate file for each added class and interface.
+ for (ClassAPI classApi : pkgDiff.classesAdded) {
+ reportAddedClass(pkgName, classApi);
+ }
}
// Report classes which were changed in the new API
@@ -428,6 +432,39 @@ public class HTMLReportGenerator {
reportFile = oldReportFile;
}
+ /**
+ * Write out a quick redirection file for added classes.
+ */
+ public void reportAddedClass(String pkgName, ClassAPI classApi) {
+ String className = classApi.name_;
+
+ String localReportFileName = reportFileName + JDiff.DIR_SEP + pkgName + "." + className
+ + reportFileExt;
+ if (outputDir != null)
+ localReportFileName = outputDir + JDiff.DIR_SEP + localReportFileName;
+
+ try (PrintWriter pw = new PrintWriter(new FileOutputStream(localReportFileName))) {
+ // Link to HTML file for the class
+ String classRef = pkgName + "." + className;
+ // Deal with inner classes
+ if (className.indexOf('.') != -1) {
+ classRef = pkgName + ".";
+ classRef = classRef.replace('.', '/');
+ classRef = newDocPrefix + classRef + className;
+ } else {
+ classRef = classRef.replace('.', '/');
+ classRef = newDocPrefix + classRef;
+ }
+
+ pw.write("<html><head><meta http-equiv=\"refresh\" content=\"0;URL='" + classRef
+ + ".html'\" /></head></html>");
+ } catch(IOException e) {
+ System.out.println("IO Error while attempting to create " + localReportFileName);
+ System.out.println("Error: "+ e.getMessage());
+ System.exit(1);
+ }
+ }
+
/**
* Write out the details of a changed class in a separate file.
*/
diff --git a/src/jdiff/PackageDiff.java b/src/jdiff/PackageDiff.java
index ba94f6e..94606ac 100755
--- a/src/jdiff/PackageDiff.java
+++ b/src/jdiff/PackageDiff.java
@@ -14,11 +14,11 @@ class PackageDiff {
public String name_;
/** Classes added in the new API. */
- public List classesAdded = null;
+ public List<ClassAPI> classesAdded = null;
/** Classes removed in the new API. */
- public List classesRemoved = null;
+ public List<ClassAPI> classesRemoved = null;
/** Classes changed in the new API. */
- public List classesChanged = null;
+ public List<ClassDiff> classesChanged = null;
/**
* A string describing the changes in documentation.
@@ -31,8 +31,8 @@ class PackageDiff {
/** Default constructor. */
public PackageDiff(String name) {
name_ = name;
- classesAdded = new ArrayList(); // ClassAPI[]
- classesRemoved = new ArrayList(); // ClassAPI[]
- classesChanged = new ArrayList(); // ClassDiff[]
+ classesAdded = new ArrayList<>();
+ classesRemoved = new ArrayList<>();
+ classesChanged = new ArrayList<>();
}
}