Index: trunk/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java	(revision 7776)
+++ trunk/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java	(revision 7779)
@@ -18,5 +18,4 @@
 
 import java.util.Arrays;
-import java.util.List;
 
 /**
@@ -57,5 +56,5 @@
  * </p>
  *
- * @version $Revision: 1227719 $ $Date: 2012-01-05 18:45:51 +0100 (Thu, 05 Jan 2012) $
+ * @version $Revision: 1640271 $ $Date: 2014-11-18 02:32:15 2014 UTC (Tue, 18 Nov 2014) $
  * @since Validator 1.4
  */
@@ -163,5 +162,5 @@
      */
     public boolean isValidInfrastructureTld(String iTld) {
-        return INFRASTRUCTURE_TLD_LIST.contains(chompLeadingDot(iTld.toLowerCase()));
+        return Arrays.binarySearch(INFRASTRUCTURE_TLDS, (chompLeadingDot(iTld.toLowerCase()))) >= 0;
     }
 
@@ -174,5 +173,5 @@
      */
     public boolean isValidGenericTld(String gTld) {
-        return GENERIC_TLD_LIST.contains(chompLeadingDot(gTld.toLowerCase()));
+        return Arrays.binarySearch(GENERIC_TLDS, chompLeadingDot(gTld.toLowerCase())) >= 0;
     }
 
@@ -185,5 +184,5 @@
      */
     public boolean isValidCountryCodeTld(String ccTld) {
-        return COUNTRY_CODE_TLD_LIST.contains(chompLeadingDot(ccTld.toLowerCase()));
+        return Arrays.binarySearch(COUNTRY_CODE_TLDS, chompLeadingDot(ccTld.toLowerCase())) >= 0;
     }
 
@@ -196,5 +195,5 @@
      */
     public boolean isValidLocalTld(String iTld) {
-        return LOCAL_TLD_LIST.contains(chompLeadingDot(iTld.toLowerCase()));
+        return Arrays.binarySearch(LOCAL_TLDS, chompLeadingDot(iTld.toLowerCase())) >= 0;
     }
 
@@ -218,24 +217,418 @@
 
     private static final String[] GENERIC_TLDS = new String[] {
-        "aero",               // air transport industry
-        "asia",               // Pan-Asia/Asia Pacific
-        "biz",                // businesses
-        "cat",                // Catalan linguistic/cultural community
-        "com",                // commercial enterprises
-        "coop",               // cooperative associations
-        "info",               // informational sites
-        "jobs",               // Human Resource managers
-        "mobi",               // mobile products and services
-        "museum",             // museums, surprisingly enough
-        "name",               // individuals' sites
-        "net",                // internet support infrastructure/business
-        "org",                // noncommercial organizations
-        "pro",                // credentialed professionals and entities
-        "tel",                // contact data for businesses and individuals
-        "travel",             // entities in the travel industry
-        "gov",                // United States Government
-        "edu",                // accredited postsecondary US education entities
-        "mil",                // United States Military
-        "int"                 // organizations established by international treaty
+        "abogado",
+        "academy",
+        "accountants",
+        "active",
+        "actor",
+        "aero",
+        "agency",
+        "airforce",
+        "allfinanz",
+        "alsace",
+        "archi",
+        "army",
+        "arpa",
+        "asia",
+        "associates",
+        "attorney",
+        "auction",
+        "audio",
+        "autos",
+        "axa",
+        "band",
+        "bar",
+        "bargains",
+        "bayern",
+        "beer",
+        "berlin",
+        "best",
+        "bid",
+        "bike",
+        "bio",
+        "biz",
+        "black",
+        "blackfriday",
+        "blue",
+        "bmw",
+        "bnpparibas",
+        "boo",
+        "boutique",
+        "brussels",
+        "budapest",
+        "build",
+        "builders",
+        "business",
+        "buzz",
+        "bzh",
+        "cab",
+        "cal",
+        "camera",
+        "camp",
+        "cancerresearch",
+        "capetown",
+        "capital",
+        "caravan",
+        "cards",
+        "care",
+        "career",
+        "careers",
+        "casa",
+        "cash",
+        "cat",
+        "catering",
+        "center",
+        "ceo",
+        "cern",
+        "channel",
+        "cheap",
+        "christmas",
+        "chrome",
+        "church",
+        "citic",
+        "city",
+        "claims",
+        "cleaning",
+        "click",
+        "clinic",
+        "clothing",
+        "club",
+        "codes",
+        "coffee",
+        "college",
+        "cologne",
+        "com",
+        "community",
+        "company",
+        "computer",
+        "condos",
+        "construction",
+        "consulting",
+        "contractors",
+        "cooking",
+        "cool",
+        "coop",
+        "country",
+        "credit",
+        "creditcard",
+        "crs",
+        "cruises",
+        "cuisinella",
+        "cymru",
+        "dad",
+        "dance",
+        "dating",
+        "day",
+        "deals",
+        "degree",
+        "democrat",
+        "dental",
+        "dentist",
+        "desi",
+        "diamonds",
+        "diet",
+        "digital",
+        "direct",
+        "directory",
+        "discount",
+        "dnp",
+        "domains",
+        "durban",
+        "dvag",
+        "eat",
+        "edu",
+        "education",
+        "email",
+        "engineer",
+        "engineering",
+        "enterprises",
+        "equipment",
+        "esq",
+        "estate",
+        "eus",
+        "events",
+        "exchange",
+        "expert",
+        "exposed",
+        "fail",
+        "farm",
+        "feedback",
+        "finance",
+        "financial",
+        "fish",
+        "fishing",
+        "fitness",
+        "flights",
+        "florist",
+        "flsmidth",
+        "fly",
+        "foo",
+        "forsale",
+        "foundation",
+        "frl",
+        "frogans",
+        "fund",
+        "furniture",
+        "futbol",
+        "gal",
+        "gallery",
+        "gbiz",
+        "gent",
+        "gift",
+        "gifts",
+        "gives",
+        "glass",
+        "gle",
+        "global",
+        "globo",
+        "gmail",
+        "gmo",
+        "gmx",
+        "google",
+        "gop",
+        "gov",
+        "graphics",
+        "gratis",
+        "green",
+        "gripe",
+        "guide",
+        "guitars",
+        "guru",
+        "hamburg",
+        "haus",
+        "healthcare",
+        "help",
+        "here",
+        "hiphop",
+        "hiv",
+        "holdings",
+        "holiday",
+        "homes",
+        "horse",
+        "host",
+        "hosting",
+        "house",
+        "how",
+        "ibm",
+        "immo",
+        "immobilien",
+        "industries",
+        "info",
+        "ing",
+        "ink",
+        "institute",
+        "insure",
+        "int",
+        "international",
+        "investments",
+        "jetzt",
+        "jobs",
+        "joburg",
+        "juegos",
+        "kaufen",
+        "kim",
+        "kitchen",
+        "kiwi",
+        "koeln",
+        "krd",
+        "kred",
+        "lacaixa",
+        "land",
+        "lawyer",
+        "lease",
+        "lgbt",
+        "life",
+        "lighting",
+        "limited",
+        "limo",
+        "link",
+        "loans",
+        "london",
+        "lotto",
+        "ltda",
+        "luxe",
+        "luxury",
+        "maison",
+        "management",
+        "mango",
+        "market",
+        "marketing",
+        "media",
+        "meet",
+        "melbourne",
+        "meme",
+        "menu",
+        "miami",
+        "mil",
+        "mini",
+        "mobi",
+        "moda",
+        "moe",
+        "monash",
+        "mortgage",
+        "moscow",
+        "motorcycles",
+        "mov",
+        "museum",
+        "nagoya",
+        "name",
+        "navy",
+        "net",
+        "network",
+        "neustar",
+        "new",
+        "nexus",
+        "ngo",
+        "nhk",
+        "ninja",
+        "nra",
+        "nrw",
+        "nyc",
+        "okinawa",
+        "ong",
+        "onl",
+        "ooo",
+        "org",
+        "organic",
+        "otsuka",
+        "ovh",
+        "paris",
+        "partners",
+        "parts",
+        "pharmacy",
+        "photo",
+        "photography",
+        "photos",
+        "physio",
+        "pics",
+        "pictures",
+        "pink",
+        "pizza",
+        "place",
+        "plumbing",
+        "pohl",
+        "poker",
+        "post",
+        "praxi",
+        "press",
+        "pro",
+        "prod",
+        "productions",
+        "prof",
+        "properties",
+        "property",
+        "pub",
+        "qpon",
+        "quebec",
+        "realtor",
+        "recipes",
+        "red",
+        "rehab",
+        "reise",
+        "reisen",
+        "ren",
+        "rentals",
+        "repair",
+        "report",
+        "republican",
+        "rest",
+        "restaurant",
+        "reviews",
+        "rich",
+        "rio",
+        "rip",
+        "rocks",
+        "rodeo",
+        "rsvp",
+        "ruhr",
+        "ryukyu",
+        "saarland",
+        "sarl",
+        "sca",
+        "scb",
+        "schmidt",
+        "schule",
+        "scot",
+        "services",
+        "sexy",
+        "shiksha",
+        "shoes",
+        "singles",
+        "social",
+        "software",
+        "sohu",
+        "solar",
+        "solutions",
+        "soy",
+        "space",
+        "spiegel",
+        "supplies",
+        "supply",
+        "support",
+        "surf",
+        "surgery",
+        "suzuki",
+        "systems",
+        "tatar",
+        "tattoo",
+        "tax",
+        "technology",
+        "tel",
+        "tienda",
+        "tips",
+        "tirol",
+        "today",
+        "tokyo",
+        "tools",
+        "top",
+        "town",
+        "toys",
+        "trade",
+        "training",
+        "travel",
+        "tui",
+        "university",
+        "uno",
+        "uol",
+        "vacations",
+        "vegas",
+        "ventures",
+        "versicherung",
+        "vet",
+        "viajes",
+        "villas",
+        "vision",
+        "vlaanderen",
+        "vodka",
+        "vote",
+        "voting",
+        "voto",
+        "voyage",
+        "wales",
+        "wang",
+        "watch",
+        "webcam",
+        "website",
+        "wed",
+        "wedding",
+        "whoswho",
+        "wien",
+        "wiki",
+        "williamhill",
+        "wme",
+        "work",
+        "works",
+        "world",
+        "wtc",
+        "wtf",
+        "xxx",
+        "xyz",
+        "yachts",
+        "yandex",
+        "yoga",
+        "yokohama",
+        "youtube",
+        "zip",
+        "zone",
     };
 
@@ -293,4 +686,5 @@
         "cu",                 // Cuba
         "cv",                 // Cape Verde
+        "cw",                 // Curaçao
         "cx",                 // Christmas Island
         "cy",                 // Cyprus
@@ -449,4 +843,5 @@
         "su",                 // Soviet Union (deprecated)
         "sv",                 // El Salvador
+        "sx",                 // Sint Maarten
         "sy",                 // Syria
         "sz",                 // Swaziland
@@ -497,7 +892,9 @@
    };
 
-    private static final List<String> INFRASTRUCTURE_TLD_LIST = Arrays.asList(INFRASTRUCTURE_TLDS);
-    private static final List<String> GENERIC_TLD_LIST = Arrays.asList(GENERIC_TLDS);
-    private static final List<String> COUNTRY_CODE_TLD_LIST = Arrays.asList(COUNTRY_CODE_TLDS);
-    private static final List<String> LOCAL_TLD_LIST = Arrays.asList(LOCAL_TLDS);
+    static {
+        Arrays.sort(INFRASTRUCTURE_TLDS);
+        Arrays.sort(COUNTRY_CODE_TLDS);
+        Arrays.sort(GENERIC_TLDS);
+        Arrays.sort(LOCAL_TLDS);
+    }
 }
Index: trunk/src/org/openstreetmap/josm/data/validation/routines/EmailValidator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/routines/EmailValidator.java	(revision 7776)
+++ trunk/src/org/openstreetmap/josm/data/validation/routines/EmailValidator.java	(revision 7779)
@@ -37,5 +37,5 @@
  * </p>.
  *
- * @version $Revision: 1227719 $ $Date: 2012-01-05 18:45:51 +0100 (Thu, 05 Jan 2012) $
+ * @version $Revision: 1608584 $ $Date: 2014-07-07 19:54:07 UTC (Mon, 07 Jul 2014) $
  * @since Validator 1.4
  */
@@ -169,5 +169,6 @@
             DomainValidator domainValidator =
                     DomainValidator.getInstance(allowLocal);
-            return domainValidator.isValid(domain);
+            return domainValidator.isValid(domain) ||
+                    domainValidator.isValidTld(domain);
         }
     }
Index: trunk/src/org/openstreetmap/josm/data/validation/routines/UrlValidator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/routines/UrlValidator.java	(revision 7776)
+++ trunk/src/org/openstreetmap/josm/data/validation/routines/UrlValidator.java	(revision 7779)
@@ -69,5 +69,5 @@
  * </a>
  *
- * @version $Revision: 1227719 $ $Date: 2012-01-05 18:45:51 +0100 (Thu, 05 Jan 2012) $
+ * @version $Revision: 1640269 $ $Date: 2014-11-18 02:28:56 UTC (Tue, 18 Nov 2014) $
  * @since Validator 1.4
  */
