You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oodt.apache.org by ma...@apache.org on 2011/02/18 06:47:36 UTC

svn commit: r1071890 - /oodt/trunk/pcs/services/src/main/java/org/apache/oodt/pcs/services/HealthResource.java

Author: mattmann
Date: Fri Feb 18 05:47:36 2011
New Revision: 1071890

URL: http://svn.apache.org/viewvc?rev=1071890&view=rev
Log:
- OODT-139: refactor and clean up the SerDe for the report: WIP

Modified:
    oodt/trunk/pcs/services/src/main/java/org/apache/oodt/pcs/services/HealthResource.java

Modified: oodt/trunk/pcs/services/src/main/java/org/apache/oodt/pcs/services/HealthResource.java
URL: http://svn.apache.org/viewvc/oodt/trunk/pcs/services/src/main/java/org/apache/oodt/pcs/services/HealthResource.java?rev=1071890&r1=1071889&r2=1071890&view=diff
==============================================================================
--- oodt/trunk/pcs/services/src/main/java/org/apache/oodt/pcs/services/HealthResource.java (original)
+++ oodt/trunk/pcs/services/src/main/java/org/apache/oodt/pcs/services/HealthResource.java Fri Feb 18 05:47:36 2011
@@ -86,56 +86,11 @@ public class HealthResource extends PCSS
     PCSHealthMonitorReport report = mon.getReport();
     Map<String, Object> output = new HashMap<String, Object>();
     output.put("generated", report.getCreateDateIsoFormat());
-    Map<String, Object> daemonOutput = new HashMap<String, Object>();
-    daemonOutput.put("fm", this.encodeDaemonStatus(report.getFmStatus()));
-    daemonOutput.put("wm", this.encodeDaemonStatus(report.getWmStatus()));
-    daemonOutput.put("rm", this.encodeDaemonStatus(report.getRmStatus()));
-    if (report.getRmStatus().getStatus().equals(
-        PCSHealthMonitorMetKeys.STATUS_UP)) {
-      // print out the batch stubs
-      List<Object> stubs = new Vector<Object>();
-      for (PCSDaemonStatus bStatus : (List<PCSDaemonStatus>) (List<?>) report
-          .getBatchStubStatus()) {
-        stubs.add(this.encodeDaemonStatus(bStatus));
-      }
-      daemonOutput.put("stubs", stubs);
-    }
-    List<Object> crawlerOutput = new Vector<Object>();
-    for (CrawlerStatus cs : (List<CrawlerStatus>) (List<?>) report
-        .getCrawlerStatus()) {
-      crawlerOutput.add(this
-          .encodeCrawlerStatus(cs));
-    }
-    Map<String, Object> latestFilesOutput = new HashMap<String, Object>();
-    latestFilesOutput.put("topN", PCSHealthMonitor.TOP_N_PRODUCTS);
-    List<Object> latestFilesList = new Vector<Object>();
-    for (Product prod : (List<Product>) (List<?>) report
-        .getLatestProductsIngested()) {
-      try {
-        this.encodeLatestFile(latestFilesList, prod);
-      } catch (MalformedURLException e) {
-        LOG.log(Level.WARNING, "Unable to encode latest file: ["
-            + prod.getProductName() + "]: error: Message: " + e.getMessage());
-      }
-    }
-    latestFilesOutput.put("files", latestFilesList);
-    List<Object> jobStatusList = new Vector<Object>();
-    for (JobHealthStatus js : (List<JobHealthStatus>) (List<?>) report
-        .getJobHealthStatus()) {
-      jobStatusList.add(this.encodeJobStatus(js));
-    }
-
-    List<Object> crawlerHealthList = new Vector<Object>();
-    for (CrawlerHealth ch : (List<CrawlerHealth>) (List<?>) report
-        .getCrawlerHealthStatus()) {
-      crawlerHealthList.add(this.encodeCrawlerHealth(ch));
-    }
-
-    output.put("daemonStatus", daemonOutput);
-    output.put("crawlerStatus", crawlerOutput);
-    output.put("latestFiles", latestFilesOutput);
-    output.put("jobHealth", jobStatusList);
-    output.put("ingestHealth", crawlerHealthList);
+    output.put("daemonStatus", this.encodeDaemonOutput(report));
+    output.put("crawlerStatus", this.encodeCrawlerHealthReportOutput(report));
+    output.put("latestFiles", this.encodeLatestFilesOutput(report));
+    output.put("jobHealth", this.encodeJobHealthStatusList(report));
+    output.put("ingestHealth", this.encodeIngestHealthList(report));
     return this.encodeReportAsJson(output);
   }
 
@@ -146,12 +101,7 @@ public class HealthResource extends PCSS
     PCSHealthMonitorReport report = mon.getReport();
     Map<String, Object> output = new HashMap<String, Object>();
     output.put("generated", report.getCreateDateIsoFormat());
-    List<Object> crawlerHealthList = new Vector<Object>();
-    for (CrawlerHealth ch : (List<CrawlerHealth>) (List<?>) report
-        .getCrawlerHealthStatus()) {
-      crawlerHealthList.add(this.encodeCrawlerHealth(ch));
-    }
-    output.put("ingestHealth", crawlerHealthList);
+    output.put("ingestHealth", this.encodeIngestHealthList(report));
     return this.encodeReportAsJson(output);
   }
 
@@ -162,20 +112,8 @@ public class HealthResource extends PCSS
     PCSHealthMonitorReport report = mon.getReport();
     Map<String, Object> output = new HashMap<String, Object>();
     output.put("generated", report.getCreateDateIsoFormat());
-    List<Object> crawlerHealthList = new Vector<Object>();
-    boolean found = false;
-    for (CrawlerHealth ch : (List<CrawlerHealth>) (List<?>) report
-        .getCrawlerHealthStatus()) {
-      if (ch.getCrawlerName().equals(crawlerName)) {
-        crawlerHealthList.add(this.encodeCrawlerHealth(ch));
-        found = true;
-        break;
-      }
-    }
-    if (!found)
-      throw new ResourceNotFoundException(
-          "No ingest crawler found with name: [" + crawlerName + "]");
-    output.put("ingestHealth", crawlerHealthList);
+    output.put("ingestHealth", this
+        .encodeIngestHealthList(report, crawlerName));
     return this.encodeReportAsJson(output);
   }
 
@@ -186,12 +124,7 @@ public class HealthResource extends PCSS
     PCSHealthMonitorReport report = mon.getReport();
     Map<String, Object> output = new HashMap<String, Object>();
     output.put("generated", report.getCreateDateIsoFormat());
-    List<Object> jobStatusList = new Vector<Object>();
-    for (JobHealthStatus js : (List<JobHealthStatus>) (List<?>) report
-        .getJobHealthStatus()) {
-      jobStatusList.add(this.encodeJobStatus(js));
-    }
-    output.put("jobHealth", jobStatusList);
+    output.put("jobHealth", this.encodeJobHealthStatusList(report));
     return this.encodeReportAsJson(output);
   }
 
@@ -202,20 +135,7 @@ public class HealthResource extends PCSS
     PCSHealthMonitorReport report = mon.getReport();
     Map<String, Object> output = new HashMap<String, Object>();
     output.put("generated", report.getCreateDateIsoFormat());
-    List<Object> jobStatusList = new Vector<Object>();
-    boolean found = false;
-    for (JobHealthStatus js : (List<JobHealthStatus>) (List<?>) report
-        .getJobHealthStatus()) {
-      if (js.getStatus().equals(jobState)) {
-        jobStatusList.add(this.encodeJobStatus(js));
-        found = true;
-        break;
-      }
-    }
-    if (!found)
-      throw new ResourceNotFoundException(
-          "Unable to find any jobs with associated state: [" + jobState + "]");
-    output.put("jobHealth", jobStatusList);
+    output.put("jobHealth", this.encodeJobHealthStatusList(report, jobState));
     return this.encodeReportAsJson(output);
   }
 
@@ -226,21 +146,7 @@ public class HealthResource extends PCSS
     PCSHealthMonitorReport report = mon.getReport();
     Map<String, Object> output = new HashMap<String, Object>();
     output.put("generated", report.getCreateDateIsoFormat());
-    Map<String, Object> daemonOutput = new HashMap<String, Object>();
-    daemonOutput.put("fm", this.encodeDaemonStatus(report.getFmStatus()));
-    daemonOutput.put("wm", this.encodeDaemonStatus(report.getWmStatus()));
-    daemonOutput.put("rm", this.encodeDaemonStatus(report.getRmStatus()));
-    if (report.getRmStatus().getStatus().equals(
-        PCSHealthMonitorMetKeys.STATUS_UP)) {
-      // print out the batch stubs
-      List<Object> stubs = new Vector<Object>();
-      for (PCSDaemonStatus bStatus : (List<PCSDaemonStatus>) (List<?>) report
-          .getBatchStubStatus()) {
-        stubs.add(this.encodeDaemonStatus(bStatus));
-      }
-      daemonOutput.put("stubs", stubs);
-    }
-    output.put("daemonStatus", daemonOutput);
+    output.put("daemonStatus", this.encodeDaemonOutput(report));
     return this.encodeReportAsJson(output);
   }
 
@@ -251,30 +157,7 @@ public class HealthResource extends PCSS
     PCSHealthMonitorReport report = mon.getReport();
     Map<String, Object> output = new HashMap<String, Object>();
     output.put("generated", report.getCreateDateIsoFormat());
-    Map<String, Object> daemonOutput = new HashMap<String, Object>();
-    if (daemonName.equals("fm")) {
-      daemonOutput.put("fm", this.encodeDaemonStatus(report.getFmStatus()));
-    } else if (daemonName.equals("wm")) {
-      daemonOutput.put("wm", this.encodeDaemonStatus(report.getWmStatus()));
-    } else if (daemonName.equals("rm")) {
-      daemonOutput.put("rm", this.encodeDaemonStatus(report.getRmStatus()));
-    } else if (daemonName.equals("stubs")) {
-      if (report.getRmStatus().getStatus().equals(
-          PCSHealthMonitorMetKeys.STATUS_UP)) {
-        // print out the batch stubs
-        List<Object> stubs = new Vector<Object>();
-        for (PCSDaemonStatus bStatus : (List<PCSDaemonStatus>) (List<?>) report
-            .getBatchStubStatus()) {
-          stubs.add(this.encodeDaemonStatus(bStatus));
-        }
-        daemonOutput.put("stubs", stubs);
-      } else
-        throw new ResourceNotFoundException(
-            "Resource Manager not running so no batch stubs to check.");
-    } else
-      throw new ResourceNotFoundException("Daemon not found");
-
-    output.put("daemonStatus", daemonOutput);
+    output.put("daemonStatus", this.encodeDaemonOutput(report, daemonName));
     return this.encodeReportAsJson(output);
 
   }
@@ -286,13 +169,7 @@ public class HealthResource extends PCSS
     PCSHealthMonitorReport report = mon.getReport();
     Map<String, Object> output = new HashMap<String, Object>();
     output.put("generated", report.getCreateDateIsoFormat());
-    List<Object> crawlerOutput = new Vector<Object>();
-    for (CrawlerStatus cs : (List<CrawlerStatus>) (List<?>) report
-        .getCrawlerStatus()) {
-      crawlerOutput.add(this.encodeCrawlerStatus(cs));
-    }
-
-    output.put("crawlerStatus", crawlerOutput);
+    output.put("crawlerStatus", this.encodeCrawlerHealthReportOutput(report));
     return this.encodeReportAsJson(output);
   }
 
@@ -304,22 +181,8 @@ public class HealthResource extends PCSS
     PCSHealthMonitorReport report = mon.getReport();
     Map<String, Object> output = new HashMap<String, Object>();
     output.put("generated", report.getCreateDateIsoFormat());
-    List<Object> crawlerOutput = new Vector<Object>();
-    boolean found = false;
-    for (CrawlerStatus cs : (List<CrawlerStatus>) (List<?>) report
-        .getCrawlerStatus()) {
-      if (cs.getInfo().getCrawlerName().equals(crawlerName)) {
-        crawlerOutput.add(this
-            .encodeCrawlerStatus(cs));
-        found = true;
-        break;
-      }
-    }
-    if (!found)
-      throw new ResourceNotFoundException(
-          "Unable to find any crawlers with name: [" + crawlerName + "]");
-
-    output.put("crawlerStatus", crawlerOutput);
+    output.put("crawlerStatus", this.encodeCrawlerHealthReportOutput(report,
+        crawlerName));
     return this.encodeReportAsJson(output);
   }
 
@@ -330,21 +193,7 @@ public class HealthResource extends PCSS
     PCSHealthMonitorReport report = mon.getReport();
     Map<String, Object> output = new HashMap<String, Object>();
     output.put("generated", report.getCreateDateIsoFormat());
-    Map<String, Object> latestFilesOutput = new HashMap<String, Object>();
-    latestFilesOutput.put("topN", PCSHealthMonitor.TOP_N_PRODUCTS);
-    List<Object> latestFilesList = new Vector<Object>();
-    for (Product prod : (List<Product>) (List<?>) report
-        .getLatestProductsIngested()) {
-      try {
-        this.encodeLatestFile(latestFilesList, prod);
-      } catch (MalformedURLException e) {
-        LOG.log(Level.WARNING, "Unable to encode latest file: ["
-            + prod.getProductName() + "]: error: Message: " + e.getMessage());
-      }
-    }
-
-    latestFilesOutput.put("files", latestFilesList);
-    output.put("latestFiles", latestFilesOutput);
+    output.put("latestFiles", this.encodeLatestFilesOutput(report));
     return this.encodeReportAsJson(output);
   }
 
@@ -376,13 +225,13 @@ public class HealthResource extends PCSS
         .getProductTypeId()));
     p.setProductReferences(fm.safeGetProductReferences(p));
     Metadata prodMet = fm.safeGetMetadata(p);
-    if(prodMet == null) prodMet = new Metadata();
+    if (prodMet == null)
+      prodMet = new Metadata();
     Map<String, Object> fileOutput = new HashMap<String, Object>();
     fileOutput.put("filepath", fm.getFilePath(p));
     fileOutput.put("receivedTime", prodMet.getMetadata("CAS."
-        + CoreMetKeys.PRODUCT_RECEVIED_TIME) != null ? 
-            prodMet.getMetadata("CAS."
-                + CoreMetKeys.PRODUCT_RECEVIED_TIME):"UNKNOWN");
+        + CoreMetKeys.PRODUCT_RECEVIED_TIME) != null ? prodMet
+        .getMetadata("CAS." + CoreMetKeys.PRODUCT_RECEVIED_TIME) : "UNKNOWN");
     latestFilesOutput.add(fileOutput);
   }
 
@@ -395,6 +244,144 @@ public class HealthResource extends PCSS
     return output;
   }
 
+  private List<Object> encodeIngestHealthList(PCSHealthMonitorReport report,
+      String... crawlerName) {
+    List<Object> crawlerHealthList = new Vector<Object>();
+    if (crawlerName.length > 0) {
+      boolean found = false;
+      for (CrawlerHealth ch : (List<CrawlerHealth>) (List<?>) report
+          .getCrawlerHealthStatus()) {
+        if (ch.getCrawlerName().equals(crawlerName[0])) {
+          crawlerHealthList.add(this.encodeCrawlerHealth(ch));
+          found = true;
+          break;
+        }
+      }
+      if (!found)
+        throw new ResourceNotFoundException(
+            "No ingest crawler found with name: [" + crawlerName + "]");
+    } else {
+      for (CrawlerHealth ch : (List<CrawlerHealth>) (List<?>) report
+          .getCrawlerHealthStatus()) {
+        crawlerHealthList.add(this.encodeCrawlerHealth(ch));
+      }
+    }
+    return crawlerHealthList;
+  }
+
+  private List<Object> encodeJobHealthStatusList(PCSHealthMonitorReport report,
+      String... jobState) {
+    List<Object> jobStatusList = new Vector<Object>();
+    if (jobState.length > 0) {
+      boolean found = false;
+      for (JobHealthStatus js : (List<JobHealthStatus>) (List<?>) report
+          .getJobHealthStatus()) {
+        if (js.getStatus().equals(jobState[0])) {
+          jobStatusList.add(this.encodeJobStatus(js));
+          found = true;
+          break;
+        }
+      }
+      if (!found)
+        throw new ResourceNotFoundException(
+            "Unable to find any jobs with associated state: [" + jobState[0]
+                + "]");
+    } else {
+      for (JobHealthStatus js : (List<JobHealthStatus>) (List<?>) report
+          .getJobHealthStatus()) {
+        jobStatusList.add(this.encodeJobStatus(js));
+      }
+    }
+    return jobStatusList;
+  }
+
+  private Map<String, Object> encodeLatestFilesOutput(
+      PCSHealthMonitorReport report) {
+    Map<String, Object> latestFilesOutput = new HashMap<String, Object>();
+    latestFilesOutput.put("topN", PCSHealthMonitor.TOP_N_PRODUCTS);
+    List<Object> latestFilesList = new Vector<Object>();
+    for (Product prod : (List<Product>) (List<?>) report
+        .getLatestProductsIngested()) {
+      try {
+        this.encodeLatestFile(latestFilesList, prod);
+      } catch (MalformedURLException e) {
+        LOG.log(Level.WARNING, "Unable to encode latest file: ["
+            + prod.getProductName() + "]: error: Message: " + e.getMessage());
+      }
+    }
+    latestFilesOutput.put("files", latestFilesList);
+    return latestFilesOutput;
+  }
+
+  private List<Object> encodeCrawlerHealthReportOutput(
+      PCSHealthMonitorReport report, String... crawlerName) {
+    List<Object> crawlerOutput = new Vector<Object>();
+    if (crawlerName.length > 0) {
+      boolean found = false;
+      for (CrawlerStatus cs : (List<CrawlerStatus>) (List<?>) report
+          .getCrawlerStatus()) {
+        if (cs.getInfo().getCrawlerName().equals(crawlerName[0])) {
+          crawlerOutput.add(this.encodeCrawlerStatus(cs));
+          found = true;
+          break;
+        }
+      }
+      if (!found)
+        throw new ResourceNotFoundException(
+            "Unable to find any crawlers with name: [" + crawlerName + "]");
+    } else {
+      for (CrawlerStatus cs : (List<CrawlerStatus>) (List<?>) report
+          .getCrawlerStatus()) {
+        crawlerOutput.add(this.encodeCrawlerStatus(cs));
+      }
+    }
+
+    return crawlerOutput;
+  }
+
+  private Map<String, Object> encodeDaemonOutput(PCSHealthMonitorReport report,
+      String... daemonName) {
+    Map<String, Object> daemonOutput = new HashMap<String, Object>();
+    if (daemonName.length > 0) {
+      if (daemonName.equals("fm")) {
+        daemonOutput.put("fm", this.encodeDaemonStatus(report.getFmStatus()));
+      } else if (daemonName[0].equals("wm")) {
+        daemonOutput.put("wm", this.encodeDaemonStatus(report.getWmStatus()));
+      } else if (daemonName[0].equals("rm")) {
+        daemonOutput.put("rm", this.encodeDaemonStatus(report.getRmStatus()));
+      } else if (daemonName[0].equals("stubs")) {
+        if (report.getRmStatus().getStatus().equals(
+            PCSHealthMonitorMetKeys.STATUS_UP)) {
+          // print out the batch stubs
+          List<Object> stubs = new Vector<Object>();
+          for (PCSDaemonStatus bStatus : (List<PCSDaemonStatus>) (List<?>) report
+              .getBatchStubStatus()) {
+            stubs.add(this.encodeDaemonStatus(bStatus));
+          }
+          daemonOutput.put("stubs", stubs);
+        } else
+          throw new ResourceNotFoundException(
+              "Resource Manager not running so no batch stubs to check.");
+      } else
+        throw new ResourceNotFoundException("Daemon not found");
+    } else {
+      daemonOutput.put("fm", this.encodeDaemonStatus(report.getFmStatus()));
+      daemonOutput.put("wm", this.encodeDaemonStatus(report.getWmStatus()));
+      daemonOutput.put("rm", this.encodeDaemonStatus(report.getRmStatus()));
+      if (report.getRmStatus().getStatus().equals(
+          PCSHealthMonitorMetKeys.STATUS_UP)) {
+        // print out the batch stubs
+        List<Object> stubs = new Vector<Object>();
+        for (PCSDaemonStatus bStatus : (List<PCSDaemonStatus>) (List<?>) report
+            .getBatchStubStatus()) {
+          stubs.add(this.encodeDaemonStatus(bStatus));
+        }
+        daemonOutput.put("stubs", stubs);
+      }
+    }
+    return daemonOutput;
+  }
+
   private Map<String, String> encodeDaemonStatus(PCSDaemonStatus status) {
     Map<String, String> output = new HashMap<String, String>();
     output.put("daemon", status.getDaemonName());