Author: echatellier Date: 2010-09-20 12:45:10 +0200 (Mon, 20 Sep 2010) New Revision: 324 Url: http://nuiton.org/repositories/revision/wikitty/324 Log: Fix null pointer exception when trying to reindex wikitty not already in index Modified: trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java Modified: trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java =================================================================== --- trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java 2010-09-17 08:33:00 UTC (rev 323) +++ trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java 2010-09-20 10:45:10 UTC (rev 324) @@ -271,6 +271,8 @@ * TreeNode.A : B * TreeNode.B : C * TreeNode.C : TreeNode.empty + * + * @throws SolrServerException */ public void reindex() throws SolrServerException { for (String id : getReindexIds()) { @@ -281,26 +283,26 @@ doc = new SolrInputDocument(); // Copy old field value - - // FIXME EC-20100831 le retour de findById peut être - // null. A tester pourquoi, mais si les objets - // attachés aux tree nodes ne sont pas encore dans - // la base, le retour est null et ... NPE - // un simple log.warn devrait suffire - SolrDocument found = findById(id); - Collection<String> fieldNames = found.getFieldNames(); - for (String fieldName : fieldNames) { - Collection<Object> fieldValues = found.getFieldValues(fieldName); - - if(!fieldName.startsWith(TREENODE_PREFIX)) { - for (Object fieldValue : fieldValues) { - doc.addField(fieldName, fieldValue); + if (found != null) { + Collection<String> fieldNames = found.getFieldNames(); + for (String fieldName : fieldNames) { + Collection<Object> fieldValues = found.getFieldValues(fieldName); + + if(!fieldName.startsWith(TREENODE_PREFIX)) { + for (Object fieldValue : fieldValues) { + doc.addField(fieldName, fieldValue); + } } } + + solrResource.addDoc(id, doc); } - - solrResource.addDoc(id, doc); + else { + if (log.isWarnEnabled()) { + log.warn("Can't find wikitty id '" + id + "' in index. Skip this wikitty."); + } + } } // Add tree node fields