From c5031b536aa11d6f76f0c033a94decd5643e858c Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 15 Sep 2014 16:41:25 +0200
Subject: [PATCH] no-jira: fix NPE in the indexer REST API for statistics if
 the indexer is disabled

---
 .../restapi/system/IndexerWebService.java     | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/olat/restapi/system/IndexerWebService.java b/src/main/java/org/olat/restapi/system/IndexerWebService.java
index e605717bc49..a172ae76b22 100644
--- a/src/main/java/org/olat/restapi/system/IndexerWebService.java
+++ b/src/main/java/org/olat/restapi/system/IndexerWebService.java
@@ -69,8 +69,13 @@ public class IndexerWebService {
 	@Path("status")
 	@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
 	public Response getStatus(@Context HttpServletRequest request) {
+		String status;
 		SearchServiceStatus serviceStatus = SearchServiceFactory.getService().getStatus();
-		String status = serviceStatus.getStatus();
+		if(serviceStatus instanceof SearchServiceStatusImpl) {
+			status = serviceStatus.getStatus();
+		} else {
+			status = "disabled";
+		}
 		return Response.ok(new IndexerStatus(status)).build();
 	}
 	
@@ -85,8 +90,14 @@ public class IndexerWebService {
 	@Path("status")
 	@Produces({MediaType.TEXT_PLAIN})
 	public Response getPlainTextStatus(@Context HttpServletRequest request) {
+		String status;
 		SearchServiceStatus serviceStatus = SearchServiceFactory.getService().getStatus();
-		return Response.ok(serviceStatus.getStatus()).build();
+		if(serviceStatus instanceof SearchServiceStatusImpl) {
+			status = serviceStatus.getStatus();
+		} else {
+			status = "disabled";
+		}
+		return Response.ok(status).build();
 	}
 	
 	/**
@@ -123,8 +134,10 @@ public class IndexerWebService {
 			stats.setRunningFolderIndexerCount(fStatus.getNumberRunningFolderIndexer());
 			stats.setAvailableFolderIndexerCount(fStatus.getNumberAvailableFolderIndexer());
 			stats.setLastFullIndexTime(fStatus.getLastFullIndexTime());
+			stats.setStatus(status.getStatus());
+		} else {
+			stats.setStatus("disabled");
 		}
-		stats.setStatus(status.getStatus());
 		return stats;
 	}
 }
-- 
GitLab