Browse Source

HADOOP-1408. Fix a compiler warning by adding a class to replace a generic. Contributed by Owen.

git-svn-id: https://svn.apache.org/repos/asf/lucene/hadoop/trunk@541096 13f79535-47bb-0310-9956-ffa450edef68
Doug Cutting 18 years ago
parent
commit
89c16b951e

+ 3 - 0
CHANGES.txt

@@ -66,6 +66,9 @@ Trunk (unreleased changes)
  21. HADOOP-800.  Improvements to HDFS web-based file browser.
      (Enis Soztutar via cutting)
 
+ 22. HADOOP-1408.  Fix a compiler warning by adding a class to replace
+     a generic.  (omalley via cutting)
+
 
 Branch 0.13 (unreleased changes)
 

+ 0 - 16
build.xml

@@ -225,7 +225,6 @@
      encoding="${build.encoding}" 
      srcdir="${src.dir};${build.src}"
      includes="org/apache/hadoop/**/*.java"
-     excludes="org/apache/hadoop/**/*_jsp.java"
      destdir="${build.classes}"
      debug="${javac.debug}"
      optimize="${javac.optimize}"
@@ -236,21 +235,6 @@
       <classpath refid="classpath"/>
     </javac>   
   	
-    <!-- Compile JSPs without checking warnings -->
-    <javac 
-     encoding="${build.encoding}" 
-     srcdir="${src.dir};${build.src}"
-     includes="org/apache/hadoop/**/*_jsp.java"
-     destdir="${build.classes}"
-     debug="${javac.debug}"
-     optimize="${javac.optimize}"
-     target="${javac.version}"
-     source="${javac.version}"
-     deprecation="${javac.deprecation}">
-      <compilerarg line="${javac.args}" />
-      <classpath refid="classpath"/>
-    </javac>
-    
     <copy todir="${build.classes}">
       <fileset 
         dir="${src.dir}" 

+ 20 - 7
src/java/org/apache/hadoop/mapred/DefaultJobHistoryParser.java

@@ -3,7 +3,7 @@ package org.apache.hadoop.mapred;
 import java.util.*;
 import java.io.*;
 import org.apache.hadoop.mapred.JobHistory.Keys; 
-import org.apache.hadoop.mapred.JobHistory.Values;;
+import org.apache.hadoop.mapred.JobHistory.Values;
 
 /**
  * Default parser for job history files. It creates object model from 
@@ -12,14 +12,27 @@ import org.apache.hadoop.mapred.JobHistory.Values;;
  */
 public class DefaultJobHistoryParser {
 
+  // This class is required to work around the Java compiler's lack of
+  // run-time information on generic classes. In particular, we need to be able
+  // to cast to this type without generating compiler warnings, which is only
+  // possible if it is a non-generic class.
+
+  /**
+   * Contents of a job history file. Maps: 
+   * <xmp>jobTrackerId -> <jobId, JobHistory.JobInfo>*</xmp>
+   */
+  public static class MasterIndex 
+    extends TreeMap<String, Map<String, JobHistory.JobInfo>> {
+    
+  }
+
   /**
-   * Parses a master index file and returns a Map of 
-   * (jobTrakerId - Map (job Id - JobHistory.JobInfo)). 
+   * Parses a master index file and returns a {@link MasterIndex}.
    * @param historyFile master index history file. 
-   * @return a map of values, as described as described earlier.  
+   * @return a {@link MasterIndex}.  
    * @throws IOException
    */
-  public static Map<String, Map<String, JobHistory.JobInfo>> parseMasterIndex(File historyFile)
+  public static MasterIndex parseMasterIndex(File historyFile)
     throws IOException {
     MasterIndexParseListener parser = new MasterIndexParseListener();
     JobHistory.parseHistory(historyFile, parser);
@@ -120,7 +133,7 @@ public class DefaultJobHistoryParser {
    */
   static class MasterIndexParseListener
     implements JobHistory.Listener {
-    Map<String, Map<String, JobHistory.JobInfo>> jobTrackerToJobs = new TreeMap<String, Map<String, JobHistory.JobInfo>>();
+    MasterIndex jobTrackerToJobs = new MasterIndex();
 
     Map<String, JobHistory.JobInfo> activeJobs = null;
     String currentTracker; 
@@ -150,7 +163,7 @@ public class DefaultJobHistoryParser {
      * Return map of parsed values. 
      * @return
      */ 
-    Map<String, Map<String, JobHistory.JobInfo>> getValues() {
+    MasterIndex getValues() {
       return jobTrackerToJobs;
     }
   }

+ 5 - 3
src/webapps/job/jobhistory.jsp

@@ -5,7 +5,8 @@
   import="org.apache.hadoop.mapred.*"
   import="org.apache.hadoop.util.*"
   import="javax.servlet.jsp.*"
-  import="java.text.SimpleDateFormat"  
+  import="java.text.SimpleDateFormat"
+  import="org.apache.hadoop.mapred.*"
   import="org.apache.hadoop.mapred.JobHistory.*"
 %>
 <jsp:include page="loadhistory.jsp">
@@ -18,8 +19,9 @@
 
 <html><body>
 <%
-		Map<String, Map<String, JobInfo>> jobTrackerToJobs = 
-		  (Map<String, Map<String, JobInfo>>)request.getSession().getAttribute("jobHistory"); 
+		DefaultJobHistoryParser.MasterIndex jobTrackerToJobs = 
+		  (DefaultJobHistoryParser.MasterIndex)request.getSession().
+		  getAttribute("jobHistory"); 
 		
 		if( null == jobTrackerToJobs ){
 		  out.println("NULL !!!");