diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/chemicals/ChemicalRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/chemicals/ChemicalRestImpl.java index 25c714b01695187487c30f571f98fa7d8dccb02f..84620343d657f1b57711e82d62f619825a9a6b48 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/chemicals/ChemicalRestImpl.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/chemicals/ChemicalRestImpl.java @@ -127,8 +127,12 @@ public class ChemicalRestImpl extends BaseRestImpl { try { MeSH mesh = meSHParser.getMeSH(chemical.getChemicalId()); - description = mesh.getDescription(); - synonyms = mesh.getSynonyms(); + if (mesh != null) { + description = mesh.getDescription(); + synonyms = mesh.getSynonyms(); + } else { + logger.warn("Mesh used by chemical is invalid: " + chemical.getChemicalId()); + } } catch (AnnotatorException e) { logger.error("Problem with accessing mesh database", e); } diff --git a/rest-api/src/test/java/lcsb/mapviewer/api/projects/chemicals/ChemicalRestImplTest.java b/rest-api/src/test/java/lcsb/mapviewer/api/projects/chemicals/ChemicalRestImplTest.java index 32b1acd9ede8099f67a72ad949d864f29c081051..ba530e1803d366a1989f6c10a25e80048655e5ff 100644 --- a/rest-api/src/test/java/lcsb/mapviewer/api/projects/chemicals/ChemicalRestImplTest.java +++ b/rest-api/src/test/java/lcsb/mapviewer/api/projects/chemicals/ChemicalRestImplTest.java @@ -21,13 +21,18 @@ import lcsb.mapviewer.model.map.MiriamData; import lcsb.mapviewer.model.map.MiriamType; import lcsb.mapviewer.model.map.model.Model; import lcsb.mapviewer.services.interfaces.IModelService; +import lcsb.mapviewer.services.search.db.DbSearchCriteria; +import lcsb.mapviewer.services.search.db.chemical.IChemicalService; public class ChemicalRestImplTest extends RestTestFunctions { Logger logger = Logger.getLogger(ChemicalRestImplTest.class); - @Autowired + @Autowired - private ChemicalRestImpl _drugRestImpl; + private ChemicalRestImpl _drugRestImpl; + + @Autowired + private IChemicalService chemicalService; @AfterClass public static void tearDownAfterClass() throws Exception { @@ -41,18 +46,30 @@ public class ChemicalRestImplTest extends RestTestFunctions { public void tearDown() throws Exception { } - @Test - public void testPrepareChemical() throws Exception { - try { - Chemical chemical = new Chemical(); - chemical.setChemicalId(new MiriamData(MiriamType.MESH_2012, "D010300")); - Map<String, Object> result = _drugRestImpl.prepareChemical(chemical, _drugRestImpl.createChemicalColumnSet(""), new ArrayList<>()); - assertNotNull(result); - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } + @Test + public void testPrepareChemical() throws Exception { + try { + Chemical chemical = new Chemical(); + chemical.setChemicalId(new MiriamData(MiriamType.MESH_2012, "D010300")); + Map<String, Object> result = _drugRestImpl.prepareChemical(chemical, _drugRestImpl.createChemicalColumnSet(""), new ArrayList<>()); + assertNotNull(result); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testPrepareChemicalWithProblematicMesh() throws Exception { + try { + Chemical chemical = chemicalService.getByName("Tetrachlorodibenzodioxin", new DbSearchCriteria().disease(new MiriamData(MiriamType.MESH_2012, "D010300"))); + Map<String, Object> result = _drugRestImpl.prepareChemical(chemical, _drugRestImpl.createChemicalColumnSet(""), new ArrayList<>()); + assertNotNull(result); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } protected ChemicalRestImpl createMockChemicalRest(String string) throws Exception { Model model = super.getModelForFile(string, true);