diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/cache/PermanentDatabaseLevelCache.java b/annotation/src/main/java/lcsb/mapviewer/annotation/cache/PermanentDatabaseLevelCache.java index 985aa139067094c32a9f058a65a47549f49f5e3e..607a26f3ba2166176d90aa00fa55c754a1d6c97f 100644 --- a/annotation/src/main/java/lcsb/mapviewer/annotation/cache/PermanentDatabaseLevelCache.java +++ b/annotation/src/main/java/lcsb/mapviewer/annotation/cache/PermanentDatabaseLevelCache.java @@ -448,12 +448,14 @@ public class PermanentDatabaseLevelCache extends XmlParser implements PermanentD try { Document document = getXmlDocumentFromString(entry.getValue()); Calendar currentDate = Calendar.getInstance(); - if (currentDate.before(entry.getExpires())) { - return document.getFirstChild(); - } else { + if (currentDate.after(entry.getExpires())) { cacheRefreshService.submit(new RefreshTask(query, type)); - return document.getFirstChild(); } + Node result = null; + if (document != null) { + result = document.getFirstChild(); + } + return result; } catch (InvalidXmlSchemaException e) { logger.warn("Invalid xml for query: " + query); logger.warn("xml: " + entry.getValue()); diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/cache/XmlSerializer.java b/annotation/src/main/java/lcsb/mapviewer/annotation/cache/XmlSerializer.java index 4a5535ec1019504d2a866848e59d7dc17301ebe8..37bf7e7338899ed5eada22585f1c275d7f3d22cb 100644 --- a/annotation/src/main/java/lcsb/mapviewer/annotation/cache/XmlSerializer.java +++ b/annotation/src/main/java/lcsb/mapviewer/annotation/cache/XmlSerializer.java @@ -8,6 +8,7 @@ import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import org.apache.commons.lang3.SerializationException; +import org.apache.log4j.Logger; import org.w3c.dom.Node; /** @@ -20,7 +21,8 @@ import org.w3c.dom.Node; * type of the object to serialize */ public class XmlSerializer<T> { - + private final Logger logger = Logger.getLogger(XmlSerializer.class); + /** * Class of the object that DAO works on. */ @@ -74,7 +76,8 @@ public class XmlSerializer<T> { } catch (JAXBException e) { throw new SerializationException(e); } catch (Exception e) { - throw new SerializationException(e); + logger.error(e, e); + return null; } return sw.toString(); } @@ -95,8 +98,9 @@ public class XmlSerializer<T> { return (T) jaxbUnmarshaller.unmarshal(node); } catch (JAXBException e) { throw new SerializationException(e); - } catch (Exception e) { //the library can throw NPE sometimes... - throw new SerializationException(e); + } catch (Exception e) { // the library can throw NPE sometimes... + logger.error(e, e); + return null; } } diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/data/TargettingStructure.java b/annotation/src/main/java/lcsb/mapviewer/annotation/data/TargettingStructure.java index 6c704dc1d364d5b8c49a8adaeb56dfd82600b0a1..c35645c3daff858808c848725b9399977e1071fc 100644 --- a/annotation/src/main/java/lcsb/mapviewer/annotation/data/TargettingStructure.java +++ b/annotation/src/main/java/lcsb/mapviewer/annotation/data/TargettingStructure.java @@ -4,10 +4,25 @@ import java.util.Collection; import lcsb.mapviewer.model.map.MiriamData; +/** + * Interface for all externall objects that interact with elements on the map. + * + * @author Piotr Gawron + * + */ public interface TargettingStructure { + /** + * + * @return list of {@link MiriamData annotations} that describe source of this + * object + */ Collection<MiriamData> getSources(); + /** + * + * @return list of {@link Target targets} with which object is interacting + */ Collection<Target> getTargets(); } diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/PubmedParser.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/PubmedParser.java index f676f785ac447eb4f5549b45c52c0f65367738f5..851847b75d185a38b232e0edeefcd26a044e60e5 100644 --- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/PubmedParser.java +++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/PubmedParser.java @@ -183,7 +183,11 @@ public class PubmedParser extends CachableInterface implements IExternalService result.setId(id + ""); if (result.getTitle() != null && !result.getTitle().trim().isEmpty()) { - setCacheValue(queryString, articleSerializer.objectToString(result)); + try { + setCacheValue(queryString, articleSerializer.objectToString(result)); + } catch (SerializationException e) { + logger.warn("Problem with serialization of the string: " + queryString); + } } else { result = null; }