View Javadoc
1   /**
2    * Copyright 2005-2015 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.krad.data.util;
17  
18  import java.lang.annotation.ElementType;
19  import java.lang.annotation.Retention;
20  import java.lang.annotation.RetentionPolicy;
21  import java.lang.annotation.Target;
22  
23  /**
24  * Specifies paths which should be linked during automatic reference linking processes.
25  *
26  * <p>If specified on a class, the path(s) will be relative to the class. If specified on a field, the path(s) will be
27  * relative to the field. If no paths are specified, then the linking will start at the class or field that is
28  * annotated.</p>
29  *
30  * <p>To prevent cascading of reference linking, this annotation can be specified with {@code cascade = false}.</p>
31  *
32  * @author Kuali Rice Rice (rice.collab@kuali.org)
33  */
34  @Target({ElementType.FIELD, ElementType.TYPE})
35  @Retention(RetentionPolicy.RUNTIME)
36  public @interface Link {
37  
38      /**
39      * Indicates whether or not linking should cascade through the specified path(s).
40      *
41      * @return true if reference linking should be cascaded, false otherwise
42      */
43      boolean cascade() default true;
44  
45      /**
46      * Specify the path or paths (relative to the annotated class or field) at which to start the reference linking
47      * process. If no path specified, then linking will be performed on the annotated element and cascaded from there.
48      *
49      * @return the path or paths at which to start reference linking
50      */
51      String[] path() default {};
52  
53  }
54