Index: /trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java	(revision 10576)
+++ /trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java	(revision 10577)
@@ -168,5 +168,5 @@
     private ImageryBounds bounds;
     /** projections supported by WMS servers */
-    private List<String> serverProjections;
+    private List<String> serverProjections = Collections.emptyList();
     /** description of the imagery entry, should contain notes what type of data it is */
     private String description;
@@ -271,5 +271,5 @@
                 }
             }
-            if (i.serverProjections != null && !i.serverProjections.isEmpty()) {
+            if (!i.serverProjections.isEmpty()) {
                 StringBuilder val = new StringBuilder();
                 for (String p : i.serverProjections) {
@@ -537,4 +537,9 @@
     }
 
+    /**
+     * Sets the pixel per degree value.
+     * @param ppd The ppd value
+     * @see #getPixelPerDegree()
+     */
     public void setPixelPerDegree(double ppd) {
         this.pixelPerDegree = ppd;
@@ -612,24 +617,54 @@
     }
 
+    /**
+     * Set the attribution text
+     * @param text The text
+     * @see #getAttributionText(int, ICoordinate, ICoordinate)
+     */
     public void setAttributionText(String text) {
         attributionText = text;
     }
 
-    public void setAttributionImageURL(String text) {
-        attributionImageURL = text;
-    }
-
-    public void setAttributionImage(String text) {
-        attributionImage = text;
-    }
-
-    public void setAttributionLinkURL(String text) {
-        attributionLinkURL = text;
-    }
-
+    /**
+     * Set the attribution image
+     * @param url The url of the image.
+     * @see #getAttributionImageURL()
+     */
+    public void setAttributionImageURL(String url) {
+        attributionImageURL = url;
+    }
+
+    /**
+     * Set the image for the attribution
+     * @param res The image resource
+     * @see #getAttributionImage()
+     */
+    public void setAttributionImage(String res) {
+        attributionImage = res;
+    }
+
+    /**
+     * Sets the URL the attribution should link to.
+     * @param url The url.
+     * @see #getAttributionLinkURL()
+     */
+    public void setAttributionLinkURL(String url) {
+        attributionLinkURL = url;
+    }
+
+    /**
+     * Sets the text to display to the user as terms of use.
+     * @param text The text
+     * @see #getTermsOfUseText()
+     */
     public void setTermsOfUseText(String text) {
         termsOfUseText = text;
     }
 
+    /**
+     * Sets a url that links to the terms of use text.
+     * @param text The url.
+     * @see #getTermsOfUseURL()
+     */
     public void setTermsOfUseURL(String text) {
         termsOfUseURL = text;
@@ -664,5 +699,5 @@
         }
 
-        if (serverProjections == null || serverProjections.isEmpty()) {
+        if (serverProjections.isEmpty()) {
             serverProjections = new ArrayList<>();
             Matcher m = Pattern.compile(".*\\{PROJ\\(([^)}]+)\\)\\}.*").matcher(url.toUpperCase(Locale.ENGLISH));
@@ -701,4 +736,7 @@
     }
 
+    /**
+     * Store the id of this info to the preferences and clear it afterwards.
+     */
     public void clearId() {
         if (this.id != null) {
@@ -735,4 +773,8 @@
     }
 
+    /**
+     * Gets the pixel per degree value
+     * @return The ppd value.
+     */
     public double getPixelPerDegree() {
         return this.pixelPerDegree;
@@ -848,10 +890,13 @@
      */
     public List<String> getServerProjections() {
-        if (serverProjections == null)
-            return Collections.emptyList();
         return Collections.unmodifiableList(serverProjections);
     }
 
+    /**
+     * Sets the list of collections the server supports
+     * @param serverProjections The list of supported projections
+     */
     public void setServerProjections(Collection<String> serverProjections) {
+        CheckParameterUtil.ensureParameterNotNull(serverProjections, "serverProjections");
         this.serverProjections = new ArrayList<>(serverProjections);
     }
@@ -866,4 +911,8 @@
     }
 
+    /**
+     * Gets a unique toolbar key to store this layer as toolbar item
+     * @return The kay.
+     */
     public String getToolbarName() {
         String res = name;
@@ -874,4 +923,8 @@
     }
 
+    /**
+     * Gets the name that should be displayed in the menu to add this imagery layer.
+     * @return The text.
+     */
     public String getMenuName() {
         String res = name;
@@ -1020,16 +1073,32 @@
     }
 
+    /**
+     * Gets the flag if epsg 4326 to 3857 is supported
+     * @return The flag.
+     */
     public boolean isEpsg4326To3857Supported() {
         return isEpsg4326To3857Supported;
     }
 
+    /**
+     * Sets the flag that epsg 4326 to 3857 is supported
+     * @param isEpsg4326To3857Supported The flag.
+     */
     public void setEpsg4326To3857Supported(boolean isEpsg4326To3857Supported) {
         this.isEpsg4326To3857Supported = isEpsg4326To3857Supported;
     }
 
+    /**
+     * Gets the flag if the georeference is valid.
+     * @return <code>true</code> if it is valid.
+     */
     public boolean isGeoreferenceValid() {
         return isGeoreferenceValid;
     }
 
+    /**
+     * Sets an indicator that the georeference is valid
+     * @param isGeoreferenceValid <code>true</code> if it is marked as valid.
+     */
     public void setGeoreferenceValid(boolean isGeoreferenceValid) {
         this.isGeoreferenceValid = isGeoreferenceValid;
@@ -1067,7 +1136,5 @@
                    n.defaultMinZoom = i.defaultMinZoom;
                }
-               if (i.serverProjections != null) {
-                   n.serverProjections = i.serverProjections;
-               }
+               n.setServerProjections(i.getServerProjections());
                n.url = i.url;
                n.imageryType = i.imageryType;
