// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.testutils;
import org.openstreetmap.josm.data.coor.LatLon;
import org.openstreetmap.josm.data.notes.Note;
import org.openstreetmap.josm.data.osm.Changeset;
import org.openstreetmap.josm.data.osm.IPrimitive;
import org.openstreetmap.josm.data.osm.OsmPrimitive;
import org.openstreetmap.josm.gui.progress.ProgressMonitor;
import org.openstreetmap.josm.io.Capabilities;
import org.openstreetmap.josm.io.OsmApi;
import org.openstreetmap.josm.io.OsmApiInitializationException;
import org.openstreetmap.josm.io.OsmTransferCanceledException;
import org.openstreetmap.josm.io.OsmTransferException;
/**
* A fake OSM API server. It is used to test again.
* <p>
* It provides only basic features.
* <p>
* These image servers are blacklisted:
* <ul>
* <li>.*blacklisted.*</li>
* <li>^(invalid|bad).*</li>
* </ul>
*
* @author Michael Zangl
*/
public class FakeOsmApi extends OsmApi {
private static FakeOsmApi instance;
private boolean initialized = false;
protected FakeOsmApi() {
super("http://fake.xxx/api");
}
@Override
public void initialize(ProgressMonitor monitor, boolean fastFail)
throws OsmTransferCanceledException, OsmApiInitializationException {
// we do not connect to any server so we do not need that.
initialized = true;
}
@Override
public synchronized Capabilities getCapabilities() {
if (!initialized) {
return null;
} else {
Capabilities capabilities = new Capabilities();
capabilities.put("blacklist", "regex", ".*blacklisted.*");
capabilities.put("blacklist", "regex", "^https?://(invalid|bad).*");
capabilities.put("version", "minimum", "0.6");
capabilities.put("version", "maximum", "0.6");
return capabilities;
}
}
@Override
public void createPrimitive(IPrimitive osm, ProgressMonitor monitor) throws OsmTransferException {
throw new UnsupportedOperationException("Not implemented");
}
@Override
public void modifyPrimitive(IPrimitive osm, ProgressMonitor monitor) throws OsmTransferException {
throw new UnsupportedOperationException("Not implemented");
}
@Override
public void deletePrimitive(OsmPrimitive osm, ProgressMonitor monitor) throws OsmTransferException {
throw new UnsupportedOperationException("Not implemented");
}
@Override
public void openChangeset(Changeset changeset, ProgressMonitor progressMonitor) throws OsmTransferException {
throw new UnsupportedOperationException("Not implemented");
}
@Override
public void updateChangeset(Changeset changeset, ProgressMonitor monitor) throws OsmTransferException {
throw new UnsupportedOperationException("Not implemented");
}
@Override
public void closeChangeset(Changeset changeset, ProgressMonitor monitor) throws OsmTransferException {
throw new UnsupportedOperationException("Not implemented");
}
@Override
public Note createNote(LatLon latlon, String text, ProgressMonitor monitor) throws OsmTransferException {
throw new UnsupportedOperationException("Not implemented");
}
@Override
public Note addCommentToNote(Note note, String comment, ProgressMonitor monitor) throws OsmTransferException {
throw new UnsupportedOperationException("Not implemented");
}
@Override
public Note closeNote(Note note, String closeMessage, ProgressMonitor monitor) throws OsmTransferException {
throw new UnsupportedOperationException("Not implemented");
}
@Override
public Note reopenNote(Note note, String reactivateMessage, ProgressMonitor monitor) throws OsmTransferException {
throw new UnsupportedOperationException("Not implemented");
}
/**
* Gets and caches an instance of this API.
* @return The API intance. Always the same object.
*/
public static synchronized FakeOsmApi getInstance() {
if (instance == null) {
instance = new FakeOsmApi();
cacheInstance(instance);
}
return instance;
}
}