VIVO-869 Don't operate on null URIs.

If a UriFinder finds a null URI, issue a warning message. If a null URI is submitted to UpdateUrisTask, ignore it.
This commit is contained in:
Jim Blake 2015-01-20 17:22:43 -05:00
parent d37c41cf65
commit d5a497774e
2 changed files with 16 additions and 1 deletions

View file

@ -9,12 +9,18 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.hp.hpl.jena.rdf.model.Statement; import com.hp.hpl.jena.rdf.model.Statement;
/** /**
* The basic implementation. * The basic implementation.
*/ */
public class IndexingUriFinderListBasic implements IndexingUriFinderList { public class IndexingUriFinderListBasic implements IndexingUriFinderList {
private static final Log log = LogFactory
.getLog(IndexingUriFinderListBasic.class);
private final List<IndexingUriFinder> finders; private final List<IndexingUriFinder> finders;
public IndexingUriFinderListBasic( public IndexingUriFinderListBasic(
@ -40,7 +46,14 @@ public class IndexingUriFinderListBasic implements IndexingUriFinderList {
public Set<String> findAdditionalUris(Statement stmt) { public Set<String> findAdditionalUris(Statement stmt) {
Set<String> uris = new HashSet<>(); Set<String> uris = new HashSet<>();
for (IndexingUriFinder uriFinder : finders) { for (IndexingUriFinder uriFinder : finders) {
uris.addAll(uriFinder.findAdditionalURIsToIndex(stmt)); List<String> additions = uriFinder.findAdditionalURIsToIndex(stmt);
for (String addition : additions) {
if (addition == null) {
log.warn("Finder " + uriFinder + " returned a null URI.");
} else {
uris.add(addition);
}
}
} }
return uris; return uris;
} }

View file

@ -83,6 +83,8 @@ public class UpdateUrisTask implements Task {
if (isInterrupted()) { if (isInterrupted()) {
log.info("Interrupted: " + status.getSearchIndexerStatus()); log.info("Interrupted: " + status.getSearchIndexerStatus());
break; break;
} else if (uri == null) {
// Nothing to do
} else { } else {
Individual ind = getIndividual(uri); Individual ind = getIndividual(uri);
if (ind == null) { if (ind == null) {