001/*
002 * Copyright 2012-2017 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *      http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016
017package org.springframework.boot.devtools.remote.server;
018
019import org.springframework.http.server.ServerHttpRequest;
020import org.springframework.util.Assert;
021
022/**
023 * {@link HandlerMapper} implementation that maps incoming URLs.
024 *
025 * @author Rob Winch
026 * @author Phillip Webb
027 * @since 1.3.0
028 */
029public class UrlHandlerMapper implements HandlerMapper {
030
031        private final String requestUri;
032
033        private final Handler handler;
034
035        /**
036         * Create a new {@link UrlHandlerMapper}.
037         * @param url the URL to map
038         * @param handler the handler to use
039         */
040        public UrlHandlerMapper(String url, Handler handler) {
041                Assert.hasLength(url, "URL must not be empty");
042                Assert.isTrue(url.startsWith("/"), "URL must start with '/'");
043                this.requestUri = url;
044                this.handler = handler;
045        }
046
047        @Override
048        public Handler getHandler(ServerHttpRequest request) {
049                if (this.requestUri.equals(request.getURI().getPath())) {
050                        return this.handler;
051                }
052                return null;
053        }
054
055}