From 5a2f8ce1340496313e80a50248192b99b0a1005c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Sch=C3=A4fer?= Date: Fri, 10 Aug 2018 00:11:02 +0200 Subject: [PATCH] Fix NullPointerException when adding names from wikipedia tag See https://josm.openstreetmap.de/ticket/16586 --- .../actions/WikipediaAddNamesAction.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/wikipedia/actions/WikipediaAddNamesAction.java b/src/main/java/org/wikipedia/actions/WikipediaAddNamesAction.java index 5147bd7e..c88a3930 100644 --- a/src/main/java/org/wikipedia/actions/WikipediaAddNamesAction.java +++ b/src/main/java/org/wikipedia/actions/WikipediaAddNamesAction.java @@ -13,9 +13,13 @@ import org.openstreetmap.josm.actions.JosmAction; import org.openstreetmap.josm.data.osm.DataSet; import org.openstreetmap.josm.data.osm.OsmPrimitive; +import org.openstreetmap.josm.gui.Notification; import org.openstreetmap.josm.io.remotecontrol.AddTagsDialog; +import org.openstreetmap.josm.tools.I18n; +import org.openstreetmap.josm.tools.ImageProvider; import org.openstreetmap.josm.tools.Logging; import org.wikipedia.WikipediaApp; +import org.wikipedia.WikipediaPlugin; import org.wikipedia.data.WikipediaEntry; public class WikipediaAddNamesAction extends JosmAction { @@ -29,15 +33,21 @@ public WikipediaAddNamesAction() { @Override public void actionPerformed(ActionEvent e) { final WikipediaEntry wp = WikipediaEntry.parseTag("wikipedia", getWikipediaValue()); - List tags = new ArrayList<>(); - WikipediaApp.forLanguage(wp.lang).getInterwikiArticles(wp.article).stream() + if (wp == null) { + new Notification(I18n.tr("Could not add names. Wikipedia tag is not recognized!")) + .setIcon(WikipediaPlugin.W_IMAGE.setMaxSize(ImageProvider.ImageSizes.LARGEICON).get()) + .show(); + } else { + List tags = new ArrayList<>(); + WikipediaApp.forLanguage(wp.lang).getInterwikiArticles(wp.article).stream() .filter(this::useWikipediaLangArticle) .map(i -> new String[]{"name:" + i.lang, i.article}) .forEach(tags::add); - if (Logging.isDebugEnabled()) { - Logging.debug(tags.toString()); + if (Logging.isDebugEnabled()) { + Logging.debug(tags.toString()); + } + AddTagsDialog.addTags(tags.toArray(new String[tags.size()][]), "Wikipedia", getLayerManager().getEditDataSet().getSelected()); } - AddTagsDialog.addTags(tags.toArray(new String[tags.size()][]), "Wikipedia", getLayerManager().getEditDataSet().getSelected()); } private boolean useWikipediaLangArticle(WikipediaEntry i) {