    001    // Copyright 2007, 2009, 2011 The Apache Software Foundation
    002    //
    003    // Licensed under the Apache License, Version 2.0 (the "License");
    004    // you may not use this file except in compliance with the License.
    005    // You may obtain a copy of the License at
    006    //
    007    // http://www.apache.org/licenses/LICENSE-2.0
    008    //
    009    // Unless required by applicable law or agreed to in writing, software
    010    // distributed under the License is distributed on an "AS IS" BASIS,
    011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    012    // See the License for the specific language governing permissions and
    013    // limitations under the License.
    014
    015    package org.apache.tapestry5.annotations;
    016
    017    import java.lang.annotation.Documented;
    018    import static java.lang.annotation.ElementType.FIELD;
    019    import static java.lang.annotation.ElementType.PARAMETER;
    020    import java.lang.annotation.Retention;
    021    import static java.lang.annotation.RetentionPolicy.RUNTIME;
    022    import java.lang.annotation.Target;
    023
    024    import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
    025
    026    import org.apache.tapestry5.Asset;
    027    import org.apache.tapestry5.ioc.annotations.Inject;
    028    import org.apache.tapestry5.ioc.annotations.UseWith;
    029
    030    /**
    031     * Used in conjunction with the {@link Inject} annotation to inject an {@link Asset} based on a path.
    032     */
    033    @Target(
    034    { FIELD, PARAMETER })
    035    @Documented
    036    @Retention(RUNTIME)
    037    @UseWith(
    038    { COMPONENT, MIXIN, PAGE, SERVICE })
    039    public @interface Path
    040    {
    041        /**
    042         * The path to the resource; if prefixed (say with "classpath:") then its a complete path within the identified
    043         * namespace; otherwise it's a relative path from the class containing the annotation. Symbols will be expanded.
    044         */
    045        String value();
    046    }