Index: applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java
===================================================================
--- applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java	(revision 32180)
+++ applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java	(revision 32181)
@@ -37,4 +37,8 @@
 import org.xml.sax.SAXException;
 
+/**
+ * Tile source for the Bing Maps REST Imagery API.
+ * @see <a href="https://msdn.microsoft.com/en-us/library/ff701724.aspx">MSDN</a>
+ */
 public class BingAerialTileSource extends TMSTileSource {
 
@@ -66,5 +70,5 @@
 
     protected static class Attribution {
-        private String attribution;
+        private String attributionText;
         private int minZoom;
         private int maxZoom;
@@ -102,6 +106,5 @@
             XPathFactory xPathFactory = XPathFactory.newInstance();
             XPath xpath = xPathFactory.newXPath();
-            imageUrlTemplate = xpath.compile("//ImageryMetadata/ImageUrl/text()").evaluate(document);
-            imageUrlTemplate = imageUrlTemplate.replace(
+            imageUrlTemplate = xpath.compile("//ImageryMetadata/ImageUrl/text()").evaluate(document).replace(
                     "http://ecn.{subdomain}.tiles.virtualearth.net/",
                     "https://ecn.{subdomain}.tiles.virtualearth.net/");
@@ -129,5 +132,5 @@
             NodeList imageryProviderNodes = (NodeList) xpath.compile("//ImageryMetadata/ImageryProvider")
                     .evaluate(document, XPathConstants.NODESET);
-            List<Attribution> attributions = new ArrayList<>(imageryProviderNodes.getLength());
+            List<Attribution> attributionsList = new ArrayList<>(imageryProviderNodes.getLength());
             for (int i = 0; i < imageryProviderNodes.getLength(); i++) {
                 Node providerNode = imageryProviderNodes.item(i);
@@ -139,5 +142,5 @@
                     Node areaNode = coverageAreaNodes.item(j);
                     Attribution attr = new Attribution();
-                    attr.attribution = attribution;
+                    attr.attributionText = attribution;
 
                     attr.maxZoom = Integer.parseInt(zoomMaxXpath.evaluate(areaNode));
@@ -151,9 +154,9 @@
                     attr.max = new Coordinate(northLat, eastLon);
 
-                    attributions.add(attr);
-                }
-            }
-
-            return attributions;
+                    attributionsList.add(attr);
+                }
+            }
+
+            return attributionsList;
         } catch (SAXException e) {
             System.err.println("Could not parse Bing aerials attribution metadata.");
@@ -182,8 +185,7 @@
     @Override
     public String getAttributionLinkURL() {
-        //return "http://bing.com/maps"
-        // FIXME: I've set attributionLinkURL temporarily to ToU URL to comply with bing ToU
+        // Terms of Use URL to comply with Bing Terms of Use
         // (the requirement is that we have such a link at the bottom of the window)
-        return "http://go.microsoft.com/?linkid=9710837";
+        return "https://www.microsoft.com/maps/assets/docs/terms.aspx";
     }
 
@@ -284,5 +286,5 @@
                     if (topLeft.getLon() < attr.max.getLon() && botRight.getLon() > attr.min.getLon()
                             && topLeft.getLat() > attr.min.getLat() && botRight.getLat() < attr.max.getLat()) {
-                        a.append(attr.attribution);
+                        a.append(attr.attributionText);
                         a.append(' ');
                     }
