class TeamCityPlugin implements VisuwallPlugin<TeamCityConnection> {

    @Override
    public SoftwareId getSoftwareId(URL url, Map<String, String> properties) throws SoftwareNotFoundException {
        Preconditions.checkNotNull(url, "url is mandatory");
        try {
            GenericSoftwareClient genericSoftwareClient = new GenericSoftwareClient("guest", "");
            if (properties.get("login") != null) {
                genericSoftwareClient = new GenericSoftwareClient(properties.get("login"), properties.get("password"));
            }
            TeamCityServer teamCityServer = genericSoftwareClient.resource(url + "/app/rest/server", TeamCityServer.class);
            return createSoftwareId(teamCityServer);
        } catch (ResourceNotFoundException e) {
            throw new SoftwareNotFoundException("Url " + url + " is not compatible with TeamCity", e);
        }
    }

}