/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.jooby.mvc; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * Set a path for Mvc routes. * * <pre> * @Path("/r") * class Resources { * * @Path("/sub") * @Get * public void method() { * } * } * </pre> * * <h1>Path Patterns</h1> * <p> * Jooby supports Ant-style path patterns: * </p> * <p> * Some examples: * </p> * <ul> * <li>{@code com/t?st.html} - matches {@code com/test.html} but also {@code com/tast.jsp} or * {@code com/txst.html}</li> * <li>{@code com/*.html} - matches all {@code .html} files in the {@code com} directory</li> * <li><code>com/{@literal **}/test.html</code> - matches all {@code test.html} files underneath the * {@code com} path</li> * <li>{@code **}/{@code *} - matches any path at any level.</li> * <li>{@code *} - matches any path at any level, shorthand for {@code **}/{@code *}.</li> * </ul> * * <h2>Variables</h2> * <p> * Jooby supports path parameters too: * </p> * <p> * Some examples: * </p> * <ul> * <li><code> /user/{id}</code> - /user/* and give you access to the <code>id</code> var.</li> * <li><code> /user/:id</code> - /user/* and give you access to the <code>id</code> var.</li> * <li><code> /user/{id:\\d+}</code> - /user/[digits] and give you access to the numeric * <code>id</code> var.</li> * </ul> * * @author edgar * @since 0.1.0 */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD }) public @interface Path { /** * @return Route path pattern. */ String[] value(); /** * @return Pattern to excludes/ignore. Useful for filters. */ String[] excludes() default {}; }