Changeset 13230 in josm for trunk/src


Ignore:
Timestamp:
2017-12-23T02:18:25+01:00 (7 years ago)
Author:
Don-vip
Message:

fix #15690 - parse error message sent by Tomcat in case of WMS tile loading error

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java

    r12765 r13230  
    1616import java.util.concurrent.ThreadPoolExecutor;
    1717import java.util.concurrent.TimeUnit;
     18import java.util.regex.Matcher;
     19import java.util.regex.Pattern;
    1820
    1921import org.apache.commons.jcs.access.behavior.ICacheAccess;
     
    5052    protected static final long ABSOLUTE_EXPIRE_TIME_LIMIT = TimeUnit.DAYS.toMillis(365);
    5153
     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
    5262    /**
    5363     * maximum download threads that will be started
     
    7484            Utils.newThreadFactory("JCS-downloader-%d", Thread.NORM_PRIORITY)
    7585            );
    76 
    77 
    7886
    7987    private static final ConcurrentMap<String, Set<ICachedLoaderListener>> inProgress = new ConcurrentHashMap<>();
     
    359367                } else {
    360368                    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                    }
    361380                }
    362381
     
    390409            return doCache;
    391410        } catch (IOException e) {
    392             Logging.debug("JCS - IOExecption during communication with server for: {0}", getUrlNoException());
     411            Logging.debug("JCS - IOException during communication with server for: {0}", getUrlNoException());
    393412            if (isObjectLoadable()) {
    394413                return true;
Note: See TracChangeset for help on using the changeset viewer.