Changeset 31828 in osm for applications


Ignore:
Timestamp:
2015-12-15T16:32:30+01:00 (9 years ago)
Author:
floscher
Message:

[mapillary] Move creation of Mapillary URLs in separate utility class

Location:
applications/editors/josm/plugins/mapillary
Files:
1 added
12 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryPlugin.java

    r31827 r31828  
    4141 */
    4242public class MapillaryPlugin extends Plugin {
    43   public static final String CLIENT_ID = "T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz";
    4443
    4544  /** OS route separator */
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/FinishedUploadDialog.java

    r31799 r31828  
    1616
    1717import org.openstreetmap.josm.Main;
     18import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryURL;
    1819import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryUtils;
    1920import org.openstreetmap.josm.plugins.mapillary.utils.PluginState;
     
    4445
    4546  private class WebAction implements ActionListener {
    46 
    4747    @Override
    4848    public void actionPerformed(ActionEvent e) {
    4949      try {
    50         MapillaryUtils.browse(new URL("http://www.mapillary.com/map/upload/im"));
     50        MapillaryUtils.browse(MapillaryURL.browseUploadImageURL());
    5151      } catch (IOException e1) {
    5252        Main.error(e1);
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/HyperlinkLabel.java

    r31816 r31828  
    1212import java.awt.event.MouseEvent;
    1313import java.io.IOException;
    14 import java.net.MalformedURLException;
    1514import java.net.URL;
    1615
     
    2120
    2221import org.openstreetmap.josm.Main;
     22import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryURL;
    2323import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryUtils;
    2424
     
    6060   *
    6161   * @param key The key of the image that the hyperlink will point to.
    62    * @throws MalformedURLException when the key appended to the base URL forms a malformed URL
    6362   */
    64   public void setURL(String key) throws MalformedURLException {
     63  public void setURL(String key) {
    6564    this.key = key;
    6665    if (key == null) {
    6766      this.url = null;
    68       return;
     67    } else {
     68      this.url = MapillaryURL.browseImageURL(key);
    6969    }
    70     this.url = new URL("http://www.mapillary.com/map/im/" + key);
    7170  }
    7271
     
    135134        public void actionPerformed(ActionEvent paramActionEvent) {
    136135          try {
    137             MapillaryUtils.browse(new URL("http://www.mapillary.com/map/e/" + key));
     136            MapillaryUtils.browse(MapillaryURL.browseEditURL(key));
    138137          } catch (IOException e) {
    139138            Main.error(e);
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryMainDialog.java

    r31815 r31828  
    238238        this.mapillaryImageDisplay.hyperlink.setVisible(true);
    239239        MapillaryImage mapillaryImage = (MapillaryImage) this.image;
    240         try {
    241           this.mapillaryImageDisplay.hyperlink.setURL(mapillaryImage.getKey());
    242         } catch (MalformedURLException e1) {
    243           Main.error(e1);
    244         }
     240        this.mapillaryImageDisplay.hyperlink.setURL(mapillaryImage.getKey());
    245241        // Downloads the thumbnail.
    246242        this.mapillaryImageDisplay.setImage(null);
     
    269265      } else if (this.image instanceof MapillaryImportedImage) {
    270266        this.mapillaryImageDisplay.hyperlink.setVisible(false);
    271         try {
    272           this.mapillaryImageDisplay.hyperlink.setURL(null);
    273         } catch (MalformedURLException e1) {
    274           Main.error(e1);
    275         }
     267        this.mapillaryImageDisplay.hyperlink.setURL(null);
    276268        MapillaryImportedImage mapillaryImage = (MapillaryImportedImage) this.image;
    277269        try {
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryPreferenceSetting.java

    r31810 r31828  
    2828import org.openstreetmap.josm.plugins.mapillary.oauth.MapillaryUser;
    2929import org.openstreetmap.josm.plugins.mapillary.oauth.OAuthPortListener;
     30import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryURL;
    3031import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryUtils;
    3132import org.openstreetmap.josm.tools.GBC;
     
    169170      OAuthPortListener portListener = new OAuthPortListener(callback);
    170171      portListener.start();
    171       String url = "http://www.mapillary.com/connect?redirect_uri=http:%2F%2Flocalhost:"+OAuthPortListener.PORT+"%2F&client_id="+MapillaryPlugin.CLIENT_ID+"&response_type=token&scope=user:read%20public:upload%20public:write";
    172172      try {
    173         MapillaryUtils.browse(new URL(url));
     173        MapillaryUtils.browse(MapillaryURL.connectURL("http://localhost:"+OAuthPortListener.PORT));
    174174      } catch (IOException e) {
    175175        Main.error(e);
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/io/download/MapillaryDownloader.java

    r31826 r31828  
    3838      "mapillary.max-download-area", 0.015);
    3939
    40   /** Base URL of the Mapillary API. */
    41   public static final String BASE_URL = "https://a.mapillary.com/v2/";
    4240  /** Executor that will run the petitions. */
    4341  private static ThreadPoolExecutor EXECUTOR = new ThreadPoolExecutor(3, 5,
     
    5452   */
    5553  public static void getImages(LatLon minLatLon, LatLon maxLatLon) {
    56     ConcurrentHashMap<String, Double> queryStringParts = new ConcurrentHashMap<>();
    57     queryStringParts.put("min_lat", minLatLon.lat());
    58     queryStringParts.put("min_lon", minLatLon.lon());
    59     queryStringParts.put("max_lat", maxLatLon.lat());
    60     queryStringParts.put("max_lon", maxLatLon.lon());
    61     run(new MapillarySquareDownloadManagerThread(queryStringParts));
     54    if (maxLatLon == null || maxLatLon == null) {
     55      throw new IllegalArgumentException();
     56    }
     57    getImages(new Bounds(minLatLon, maxLatLon));
    6258  }
    6359
     
    6965   */
    7066  public static void getImages(Bounds bounds) {
    71     getImages(bounds.getMin(), bounds.getMax());
     67    run(new MapillarySquareDownloadManagerThread(bounds));
    7268  }
    7369
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/io/download/MapillaryImageInfoDownloadThread.java

    r31788 r31828  
    66import java.io.InputStreamReader;
    77import java.net.MalformedURLException;
    8 import java.net.URL;
    98import java.util.concurrent.ExecutorService;
    109
     
    1413
    1514import org.openstreetmap.josm.Main;
     15import org.openstreetmap.josm.data.Bounds;
    1616import org.openstreetmap.josm.plugins.mapillary.MapillaryAbstractImage;
    1717import org.openstreetmap.josm.plugins.mapillary.MapillaryImage;
    1818import org.openstreetmap.josm.plugins.mapillary.MapillaryLayer;
     19import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryURL;
    1920
    2021/**
     
    2526 */
    2627public class MapillaryImageInfoDownloadThread extends Thread {
    27   private static final String URL = MapillaryDownloader.BASE_URL + "search/im/";
    28   private final String queryString;
     28  private final Bounds bounds;
     29  private final int page;
    2930  private final ExecutorService ex;
    3031
     
    3738   *          A String containing the parameters for the download.
    3839   */
    39   public MapillaryImageInfoDownloadThread(ExecutorService ex,
    40       String queryString) {
     40  public MapillaryImageInfoDownloadThread(ExecutorService ex, Bounds bounds, int page) {
     41    this.bounds = bounds;
     42    this.page = page;
    4143    this.ex = ex;
    42     this.queryString = queryString;
    4344  }
    4445
     
    4647  public void run() {
    4748    try (
    48       BufferedReader br = new BufferedReader(new InputStreamReader(
    49         new URL(URL + this.queryString).openStream(), "UTF-8")
    50       );
     49      BufferedReader br = new BufferedReader(new InputStreamReader(MapillaryURL.searchImageURL(bounds, page).openStream(), "UTF-8"));
    5150    ) {
    5251      JsonObject jsonobj = Json.createReader(br).readObject();
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/io/download/MapillarySequenceDownloadThread.java

    r31788 r31828  
    55import java.io.IOException;
    66import java.io.InputStreamReader;
    7 import java.net.URL;
    87import java.util.ArrayList;
    98import java.util.List;
     
    1514
    1615import org.openstreetmap.josm.Main;
     16import org.openstreetmap.josm.data.Bounds;
    1717import org.openstreetmap.josm.plugins.mapillary.MapillaryAbstractImage;
    1818import org.openstreetmap.josm.plugins.mapillary.MapillaryData;
     
    2020import org.openstreetmap.josm.plugins.mapillary.MapillaryLayer;
    2121import org.openstreetmap.josm.plugins.mapillary.MapillarySequence;
     22import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryURL;
    2223
    2324/**
     
    3031 */
    3132public class MapillarySequenceDownloadThread extends Thread {
    32   private static final String URL = MapillaryDownloader.BASE_URL + "search/s/";
    33 
    34   private final String queryString;
     33  private final Bounds bounds;
     34  private final int page;
    3535  private final ExecutorService ex;
    36   private final MapillaryLayer layer;
    3736
    3837  /**
     
    4443   *          String containing the parameters for the download.
    4544   */
    46   public MapillarySequenceDownloadThread(ExecutorService ex, String queryString) {
    47     this.queryString = queryString;
     45  public MapillarySequenceDownloadThread(ExecutorService ex, Bounds bounds, int page) {
     46    this.bounds = bounds;
     47    this.page = page;
    4848    this.ex = ex;
    49     this.layer = MapillaryLayer.getInstance();
    5049  }
    5150
     
    5453    try (
    5554      BufferedReader br = new BufferedReader(new InputStreamReader(
    56         new URL(URL + this.queryString).openStream(), "UTF-8"
     55          MapillaryURL.searchSequenceURL(bounds, page).openStream(),
     56          "UTF-8"
    5757      ));
    5858    ) {
     
    7676                .getJsonNumber(j).doubleValue()));
    7777          } catch (IndexOutOfBoundsException e) {
    78             Main.warn("Mapillary bug at " + URL + this.queryString);
     78            Main.warn("Mapillary bug at " + MapillaryURL.searchSequenceURL(bounds, page));
    7979            isSequenceWrong = true;
    8080          }
     
    9595          synchronized (MapillaryAbstractImage.class) {
    9696            for (MapillaryImage img : finalImages) {
    97               if (this.layer.getData().getImages().contains(img)) {
     97              if (MapillaryLayer.getInstance().getData().getImages().contains(img)) {
    9898                // The image in finalImages is substituted by the one in the
    9999                // database, as they represent the same picture.
    100                 img = (MapillaryImage) this.layer.getData().getImages()
    101                     .get(this.layer.getData().getImages().indexOf(img));
     100                img = (MapillaryImage) MapillaryLayer.getInstance().getData().getImages()
     101                    .get(MapillaryLayer.getInstance().getData().getImages().indexOf(img));
    102102                sequence.add(img);
    103                 ((MapillaryImage) this.layer.getData().getImages()
    104                     .get(this.layer.getData().getImages().indexOf(img)))
     103                ((MapillaryImage) MapillaryLayer.getInstance().getData().getImages()
     104                    .get(MapillaryLayer.getInstance().getData().getImages().indexOf(img)))
    105105                    .setSequence(sequence);
    106106                finalImages.set(finalImages.indexOf(img), img);
     
    113113        }
    114114
    115         this.layer.getData().add(
    116             new ArrayList<MapillaryAbstractImage>(finalImages), false);
     115        MapillaryLayer.getInstance().getData().add(new ArrayList<MapillaryAbstractImage>(finalImages), false);
    117116      }
    118117    } catch (IOException e) {
    119       Main.error("Error reading the url " + URL + this.queryString
    120           + " might be a Mapillary problem.");
     118      Main.error("Error reading the url " + MapillaryURL.searchSequenceURL(bounds, page) + " might be a Mapillary problem.", e);
    121119    }
    122120    MapillaryData.dataUpdated();
     
    124122
    125123  private boolean isInside(MapillaryAbstractImage image) {
    126     for (int i = 0; i < this.layer.getData().bounds.size(); i++)
    127       if (this.layer.getData().bounds.get(i).contains(image.getLatLon()))
     124    for (int i = 0; i < MapillaryLayer.getInstance().getData().bounds.size(); i++)
     125      if (MapillaryLayer.getInstance().getData().bounds.get(i).contains(image.getLatLon()))
    128126        return true;
    129127    return false;
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/io/download/MapillarySquareDownloadManagerThread.java

    r31811 r31828  
    22package org.openstreetmap.josm.plugins.mapillary.io.download;
    33
    4 import java.io.UnsupportedEncodingException;
    5 import java.net.URLEncoder;
    6 import java.util.Locale;
    7 import java.util.Map.Entry;
    84import java.util.concurrent.ArrayBlockingQueue;
    9 import java.util.concurrent.ConcurrentMap;
    105import java.util.concurrent.ThreadPoolExecutor;
    116import java.util.concurrent.TimeUnit;
    127
    138import org.openstreetmap.josm.Main;
     9import org.openstreetmap.josm.data.Bounds;
    1410import org.openstreetmap.josm.plugins.mapillary.MapillaryData;
    15 import org.openstreetmap.josm.plugins.mapillary.MapillaryPlugin;
    1611import org.openstreetmap.josm.plugins.mapillary.gui.MapillaryFilterDialog;
    1712import org.openstreetmap.josm.plugins.mapillary.gui.MapillaryMainDialog;
     
    3328public class MapillarySquareDownloadManagerThread extends Thread {
    3429
    35   private final String imageQueryString;
    36   private final String sequenceQueryString;
    37   private final String signQueryString;
     30  private final Bounds bounds;
    3831
    3932  private final ThreadPoolExecutor downloadExecutor = new ThreadPoolExecutor(3, 5,
     
    5144   *
    5245   */
    53   public MapillarySquareDownloadManagerThread(ConcurrentMap<String, Double> queryStringParts) {
    54     this.imageQueryString = buildQueryString(queryStringParts);
    55     this.sequenceQueryString = buildQueryString(queryStringParts);
    56     this.signQueryString = buildQueryString(queryStringParts);
    57 
    58     // TODO: Move this line to the appropriate place, here's no GET-request
    59     Main.info("GET " + this.sequenceQueryString + " (Mapillary plugin)");
    60   }
    61 
    62   // TODO: Maybe move into a separate utility class?
    63   private static String buildQueryString(ConcurrentMap<String, Double> hash) {
    64     StringBuilder ret = new StringBuilder().append("?client_id=").append(MapillaryPlugin.CLIENT_ID);
    65     for (Entry<String, Double> entry : hash.entrySet())
    66       if (entry.getKey() != null)
    67         try {
    68           ret.append('&')
    69             .append(URLEncoder.encode(entry.getKey(), "UTF-8"))
    70             .append('=')
    71             .append(URLEncoder.encode(String.format(Locale.UK, "%f", entry.getValue()), "UTF-8"));
    72         } catch (UnsupportedEncodingException e) {
    73           // This should not happen, as the encoding is hard-coded
    74         }
    75     return ret.toString();
     46  public MapillarySquareDownloadManagerThread(Bounds bounds) {
     47    this.bounds = bounds;
    7648  }
    7749
     
    10577    int page = 0;
    10678    while (!this.downloadExecutor.isShutdown()) {
    107       this.downloadExecutor.execute(new MapillarySequenceDownloadThread(
    108           this.downloadExecutor, this.sequenceQueryString + "&page=" + page + "&limit=10"));
     79      this.downloadExecutor.execute(new MapillarySequenceDownloadThread(this.downloadExecutor, bounds, page));
    10980      while (this.downloadExecutor.getQueue().remainingCapacity() == 0)
    11081        Thread.sleep(500);
     
    12495    int page = 0;
    12596    while (!this.completeExecutor.isShutdown()) {
    126       this.completeExecutor.execute(new MapillaryImageInfoDownloadThread(
    127           this.completeExecutor, this.imageQueryString + "&page=" + page
    128               + "&limit=20"));
     97      this.completeExecutor.execute(new MapillaryImageInfoDownloadThread(completeExecutor, bounds, page));
    12998      while (this.completeExecutor.getQueue().remainingCapacity() == 0)
    13099        Thread.sleep(100);
     
    143112    int page = 0;
    144113    while (!this.signsExecutor.isShutdown()) {
    145       this.signsExecutor.execute(new MapillaryTrafficSignDownloadThread(
    146           this.signsExecutor, this.signQueryString + "&page=" + page
    147               + "&limit=20"));
     114      this.signsExecutor.execute(new MapillaryTrafficSignDownloadThread(this.signsExecutor, bounds, page));
    148115      while (this.signsExecutor.getQueue().remainingCapacity() == 0)
    149116        Thread.sleep(100);
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/io/download/MapillaryTrafficSignDownloadThread.java

    r31788 r31828  
    66import java.io.InputStreamReader;
    77import java.net.MalformedURLException;
    8 import java.net.URL;
    98import java.util.concurrent.ExecutorService;
    109
     
    1413
    1514import org.openstreetmap.josm.Main;
     15import org.openstreetmap.josm.data.Bounds;
    1616import org.openstreetmap.josm.plugins.mapillary.MapillaryAbstractImage;
    1717import org.openstreetmap.josm.plugins.mapillary.MapillaryImage;
    1818import org.openstreetmap.josm.plugins.mapillary.MapillaryLayer;
     19import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryURL;
    1920
    2021/**
     
    2526 */
    2627public class MapillaryTrafficSignDownloadThread extends Thread {
    27   private static final String URL = MapillaryDownloader.BASE_URL
    28       + "search/im/or/";
    29   private final String queryString;
     28  private final Bounds bounds;
     29  private final int page;
    3030  private final ExecutorService ex;
    3131
     
    3333   * Main constructor.
    3434   *
    35    * @param ex
    36    *          {@link ExecutorService} object that is executing this thread.
    37    * @param queryString
    38    *          A String containing the parameter for the download.
     35   * @param ex {@link ExecutorService} object that is executing this thread.
     36   * @param bounds the bounds in which the traffic signs should be downloaded
     37   * @page page the pagenumber of the results page that should be retrieved
    3938   */
    40   public MapillaryTrafficSignDownloadThread(ExecutorService ex,
    41       String queryString) {
     39  public MapillaryTrafficSignDownloadThread(ExecutorService ex, Bounds bounds, int page) {
     40    this.bounds = bounds;
     41    this.page = page;
    4242    this.ex = ex;
    43     this.queryString = queryString;
    4443  }
    4544
     
    4948    try (
    5049      BufferedReader br = new BufferedReader(new InputStreamReader(
    51         new URL(URL + this.queryString).openStream(), "UTF-8"
     50        MapillaryURL.searchTrafficSignURL(bounds, page).openStream(), "UTF-8"
    5251      ));
    5352    ) {
     
    6766            for (int k = 0; k < rects.size(); k++) {
    6867              JsonObject data = rects.getJsonObject(k);
    69               for (MapillaryAbstractImage image : MapillaryLayer.getInstance()
    70                   .getData().getImages())
    71                 if (image instanceof MapillaryImage
    72                     && ((MapillaryImage) image).getKey().equals(key))
    73                   try {
    74                     ((MapillaryImage) image).addSign(data.getString("type"));
    75                   } catch (Exception e) {
    76                     Main.error("Error when downloading sign.");
    77                   }
     68              for (MapillaryAbstractImage image : MapillaryLayer.getInstance().getData().getImages())
     69                if (image instanceof MapillaryImage && ((MapillaryImage) image).getKey().equals(key))
     70                  ((MapillaryImage) image).addSign(data.getString("type"));
    7871            }
    7972          }
     
    8477          for (int j = 0; j < rects.size(); j++) {
    8578            JsonObject data = rects.getJsonObject(j);
    86             for (MapillaryAbstractImage image : MapillaryLayer.getInstance()
    87                 .getData().getImages())
    88               if (image instanceof MapillaryImage
    89                   && ((MapillaryImage) image).getKey().equals(key))
     79            for (MapillaryAbstractImage image : MapillaryLayer.getInstance().getData().getImages())
     80              if (image instanceof MapillaryImage && ((MapillaryImage) image).getKey().equals(key))
    9081                ((MapillaryImage) image).addSign(data.getString("type"));
    9182          }
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/oauth/MapillaryUser.java

    r31827 r31828  
    33
    44import java.io.IOException;
    5 import java.net.URL;
    65import java.util.HashMap;
    76import java.util.Map;
    87
    98import org.openstreetmap.josm.Main;
    10 import org.openstreetmap.josm.plugins.mapillary.MapillaryPlugin;
    11 import org.openstreetmap.josm.plugins.mapillary.io.download.MapillaryDownloader;
     9import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryURL;
    1210
    1311/**
     
    3937      try {
    4038        username = OAuthUtils
    41             .getWithHeader(new URL(MapillaryDownloader.BASE_URL+"me?client_id="+MapillaryPlugin.CLIENT_ID))
     39            .getWithHeader(MapillaryURL.userURL())
    4240            .getString("username");
    4341      } catch (IOException e) {
     
    6058      if (imagesHash == null)
    6159        imagesHash = OAuthUtils
    62             .getWithHeader(
    63                 new URL(
    64                     "https://a.mapillary.com/v2/me/uploads/secrets?client_id="+MapillaryPlugin.CLIENT_ID))
     60            .getWithHeader(MapillaryURL.uploadSecretsURL())
    6561            .getString("images_hash");
    6662      hash.put("images_hash", imagesHash);
    6763      if (imagesPolicy == null)
    6864        imagesPolicy = OAuthUtils
    69             .getWithHeader(
    70                 new URL(
    71                     "https://a.mapillary.com/v2/me/uploads/secrets?client_id="+MapillaryPlugin.CLIENT_ID))
     65            .getWithHeader(MapillaryURL.uploadSecretsURL())
    7266            .getString("images_policy");
    7367    } catch (IOException e) {
    74       Main.info("Invalid Mapillary token, reseting field");
     68      Main.info("Invalid Mapillary token, resetting field");
    7569      reset();
    7670    }
  • applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/io/download/MapillarySequenceDownloadThreadTest.java

    r31799 r31828  
    4343
    4444    ExecutorService ex = Executors.newSingleThreadExecutor();
    45     String queryString = String
    46         .format(
    47             Locale.UK,
    48             "?max_lat=%.8f&max_lon=%.8f&min_lat=%.8f&min_lon=%.8f&limit=10&client_id=%s",
    49             maxLatLon.lat(), maxLatLon.lon(), minLatLon.lat(), minLatLon.lon(),
    50             MapillaryPlugin.CLIENT_ID);
     45    Bounds bounds = new Bounds(minLatLon, maxLatLon);
    5146    MapillaryLayer.getInstance().getData().bounds.add(new Bounds(minLatLon,
    5247        maxLatLon));
     
    5853      System.out.println("Sending sequence-request " + page
    5954          + " to Mapillary-servers…");
    60       Thread downloadThread = new MapillarySequenceDownloadThread(ex,
    61           queryString + "&page=" + page);
     55      Thread downloadThread = new MapillarySequenceDownloadThread(ex, bounds, page);
    6256      downloadThread.start();
    6357      downloadThread.join();
     
    6660    }
    6761    assertTrue(MapillaryLayer.getInstance().getData().getImages().size() >= 1);
    68     System.out
    69         .println("One or more images were added to the MapillaryLayer within the given bounds.");
     62    System.out.println("One or more images were added to the MapillaryLayer within the given bounds.");
    7063  }
    7164
Note: See TracChangeset for help on using the changeset viewer.