From 93ef0a630b90d832d92be659786b44ecbc52bac4 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Wed, 7 Jun 2017 16:20:36 +0200
Subject: [PATCH] error handling for problems with cache improved

---
 .../annotation/services/DrugbankHTMLParser.java          | 9 +++++++--
 .../src/main/java/lcsb/mapviewer/common/XmlParser.java   | 7 ++++++-
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/DrugbankHTMLParser.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/DrugbankHTMLParser.java
index 07b0a36856..6eac22a514 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/DrugbankHTMLParser.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/DrugbankHTMLParser.java
@@ -9,6 +9,7 @@ import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.commons.lang3.SerializationException;
 import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -474,8 +475,12 @@ public class DrugbankHTMLParser extends DrugAnnotation implements IExternalServi
 	@Override
 	public Drug findDrug(String drugName) throws DrugSearchException {
 		String query = DRUG_NAME_PREFIX + drugName;
-
-		Drug drug = getDrugSerializer().xmlToObject(getCacheNode(query));
+		Drug drug = null;
+		try {
+			drug = getDrugSerializer().xmlToObject(getCacheNode(query));
+		} catch (SerializationException e) {
+			logger.error("Problem with deserializing element by query: " + query);
+		}
 		if (drug != null) {
 			return drug;
 		}
diff --git a/commons/src/main/java/lcsb/mapviewer/common/XmlParser.java b/commons/src/main/java/lcsb/mapviewer/common/XmlParser.java
index 0f0530880c..4df8104320 100644
--- a/commons/src/main/java/lcsb/mapviewer/common/XmlParser.java
+++ b/commons/src/main/java/lcsb/mapviewer/common/XmlParser.java
@@ -210,7 +210,12 @@ public class XmlParser {
 	protected Document getXmlDocumentFromString(final String text) throws InvalidXmlSchemaException {
 		InputSource is = new InputSource();
 		is.setCharacterStream(new StringReader(text));
-		return getXmlDocumentFromInputSource(is);
+		try {
+			return getXmlDocumentFromInputSource(is);
+		} catch (NullPointerException e) {
+			logger.error("Problem with input xml: " + text);
+			throw new InvalidXmlSchemaException(e);
+		}
 	}
 
 	/**
-- 
GitLab