Changeset 13230 in josm
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java
r12765 r13230 16 16 import java.util.concurrent.ThreadPoolExecutor; 17 17 import java.util.concurrent.TimeUnit; 18 import java.util.regex.Matcher; 19 import java.util.regex.Pattern; 18 20 19 21 import org.apache.commons.jcs.access.behavior.ICacheAccess; … … 50 52 protected static final long ABSOLUTE_EXPIRE_TIME_LIMIT = TimeUnit.DAYS.toMillis(365); 51 53 54 // Pattern to detect Tomcat error message. Be careful with change of format: 55 // CHECKSTYLE.OFF: LineLength 56 // https://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/ErrorReportValve.java?r1=1740707&r2=1779641&pathrev=1779641&diff_format=h 57 // CHECKSTYLE.ON: LineLength 58 protected static final Pattern TOMCAT_ERR_MESSAGE = Pattern.compile( 59 ".*<p><b>[^<]+</b>[^<]+</p><p><b>[^<]+</b> (?:<u>)?([^<]*)(?:</u>)?</p><p><b>[^<]+</b> (?:<u>)?[^<]*(?:</u>)?</p>.*", 60 Pattern.CASE_INSENSITIVE); 61 52 62 /** 53 63 * maximum download threads that will be started … … 74 84 Utils.newThreadFactory("JCS-downloader-%d", Thread.NORM_PRIORITY) 75 85 ); 76 77 78 86 79 87 private static final ConcurrentMap<String, Set<ICachedLoaderListener>> inProgress = new ConcurrentHashMap<>(); … … 359 367 } else { 360 368 raw = new byte[]{}; 369 try { 370 String data = urlConn.fetchContent(); 371 if (!data.isEmpty()) { 372 Matcher m = TOMCAT_ERR_MESSAGE.matcher(data); 373 if (m.matches()) { 374 attributes.setErrorMessage(m.group(1).replace("'", "''")); 375 } 376 } 377 } catch (IOException e) { 378 Logging.warn(e); 379 } 361 380 } 362 381 … … 390 409 return doCache; 391 410 } catch (IOException e) { 392 Logging.debug("JCS - IOEx ecption during communication with server for: {0}", getUrlNoException());411 Logging.debug("JCS - IOException during communication with server for: {0}", getUrlNoException()); 393 412 if (isObjectLoadable()) { 394 413 return true; -
trunk/test/unit/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJobTest.java
r12620 r13230 4 4 import static org.junit.Assert.assertEquals; 5 5 import static org.junit.Assert.assertFalse; 6 import static org.junit.Assert.assertTrue; 6 7 7 8 import java.io.IOException; … … 9 10 import java.net.URL; 10 11 import java.nio.charset.StandardCharsets; 12 import java.util.regex.Matcher; 11 13 12 14 import org.apache.commons.jcs.access.behavior.ICacheAccess; … … 171 173 return JCSCacheManager.getCache("test"); 172 174 } 175 176 /** 177 * Test that error message sent by Tomcat can be parsed. 178 */ 179 @Test 180 public void testTomcatErrorMessage() { 181 Matcher m = JCSCachedTileLoaderJob.TOMCAT_ERR_MESSAGE.matcher( 182 "<html><head><title>Apache Tomcat/DGFiP - Rapport d''erreur</title><style><!--"+ 183 "H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} "+ 184 "H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} "+ 185 "H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} "+ 186 "BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} "+ 187 "B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} "+ 188 "P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}"+ 189 "A {color : black;}A.name {color : black;}HR {color : #525D76;}"+ 190 "--></style> </head><body><h1>Etat HTTP 400 - La commune demandée n'existe pas ou n'est pas accessible.</h1>"+ 191 "<HR size=\"1\" noshade=\"noshade\">"+ 192 "<p><b>type</b> Rapport d''état</p><p><b>message</b> <u>La commune demandée n'existe pas ou n'est pas accessible.</u></p>"+ 193 "<p><b>description</b> <u>La requête envoyée par le client était syntaxiquement incorrecte.</u></p>"+ 194 "<HR size=\"1\" noshade=\"noshade\"><h3>Apache Tomcat/DGFiP</h3></body></html>"); 195 assertTrue(m.matches()); 196 assertEquals("La commune demandée n'existe pas ou n'est pas accessible.", m.group(1)); 197 } 173 198 }
Note:
See TracChangeset
for help on using the changeset viewer.