Changeset 10973 in josm for trunk/src


Ignore:
Timestamp:
2016-09-08T00:02:03+02:00 (8 years ago)
Author:
Don-vip
Message:

see #13564 - proper management of invalid URLs in remote control handlers + add unit test

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java

    r10587 r10973  
    146146         */
    147147        PermissionPrefWithDefault permissionPref = getPermissionPref();
    148         if (permissionPref != null && permissionPref.pref != null) {
    149             if (!Main.pref.getBoolean(permissionPref.pref, permissionPref.defaultVal)) {
    150                 String err = MessageFormat.format("RemoteControl: ''{0}'' forbidden by preferences", myCommand);
    151                 Main.info(err);
    152                 throw new RequestHandlerForbiddenException(err);
    153             }
     148        if (permissionPref != null && permissionPref.pref != null && !Main.pref.getBoolean(permissionPref.pref, permissionPref.defaultVal)) {
     149            String err = MessageFormat.format("RemoteControl: ''{0}'' forbidden by preferences", myCommand);
     150            Main.info(err);
     151            throw new RequestHandlerForbiddenException(err);
    154152        }
    155153
     
    179177     *
    180178     * @param url The request URL.
    181      */
    182     public void setUrl(String url) {
     179     * @throws RequestHandlerBadRequestException if request URL is invalid
     180     */
     181    public void setUrl(String url) throws RequestHandlerBadRequestException {
    183182        this.request = url;
    184         parseArgs();
     183        try {
     184            parseArgs();
     185        } catch (URISyntaxException e) {
     186            throw new RequestHandlerBadRequestException(e);
     187        }
    185188    }
    186189
     
    190193     *
    191194     * Can be overridden by subclass.
    192      */
    193     protected void parseArgs() {
    194         try {
    195             this.args = getRequestParameter(new URI(this.request));
    196         } catch (URISyntaxException ex) {
    197             throw new RuntimeException(ex);
    198         }
     195     * @throws URISyntaxException if request URL is invalid
     196     */
     197    protected void parseArgs() throws URISyntaxException {
     198        this.args = getRequestParameter(new URI(this.request));
    199199    }
    200200
     
    311311
    312312    public static class RequestHandlerErrorException extends RequestHandlerException {
     313
     314        /**
     315         * Constructs a new {@code RequestHandlerErrorException}.
     316         * @param cause the cause (which is saved for later retrieval by the {@link #getCause()} method).
     317         */
    313318        public RequestHandlerErrorException(Throwable cause) {
    314319            super(cause);
     
    318323    public static class RequestHandlerBadRequestException extends RequestHandlerException {
    319324
     325        /**
     326         * Constructs a new {@code RequestHandlerBadRequestException}.
     327         * @param message the detail message. The detail message is saved for later retrieval by the {@link #getMessage()} method.
     328         */
    320329        public RequestHandlerBadRequestException(String message) {
    321330            super(message);
    322331        }
    323332
     333        /**
     334         * Constructs a new {@code RequestHandlerBadRequestException}.
     335         * @param cause the cause (which is saved for later retrieval by the {@link #getCause()} method).
     336         */
     337        public RequestHandlerBadRequestException(Throwable cause) {
     338            super(cause);
     339        }
     340
     341        /**
     342         * Constructs a new {@code RequestHandlerBadRequestException}.
     343         * @param message the detail message. The detail message is saved for later retrieval by the {@link #getMessage()} method.
     344         * @param cause the cause (which is saved for later retrieval by the {@link #getCause()} method).
     345         */
    324346        public RequestHandlerBadRequestException(String message, Throwable cause) {
    325347            super(message, cause);
     
    328350
    329351    public static class RequestHandlerForbiddenException extends RequestHandlerException {
    330         private static final long serialVersionUID = 2263904699747115423L;
    331 
     352
     353        /**
     354         * Constructs a new {@code RequestHandlerForbiddenException}.
     355         * @param message the detail message. The detail message is saved for later retrieval by the {@link #getMessage()} method.
     356         */
    332357        public RequestHandlerForbiddenException(String message) {
    333358            super(message);
     
    337362    public abstract static class RawURLParseRequestHandler extends RequestHandler {
    338363        @Override
    339         protected void parseArgs() {
     364        protected void parseArgs() throws URISyntaxException {
    340365            Map<String, String> args = new HashMap<>();
    341366            if (request.indexOf('?') != -1) {
Note: See TracChangeset for help on using the changeset viewer.