01: // Copyright 2006 The Apache Software Foundation
02: //
03: // Licensed under the Apache License, Version 2.0 (the "License");
04: // you may not use this file except in compliance with the License.
05: // You may obtain a copy of the License at
06: //
07: // http://www.apache.org/licenses/LICENSE-2.0
08: //
09: // Unless required by applicable law or agreed to in writing, software
10: // distributed under the License is distributed on an "AS IS" BASIS,
11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12: // See the License for the specific language governing permissions and
13: // limitations under the License.
14:
15: package org.apache.tapestry.ioc.annotations;
16:
17: import static java.lang.annotation.ElementType.METHOD;
18: import static java.lang.annotation.RetentionPolicy.RUNTIME;
19:
20: import java.lang.annotation.Documented;
21: import java.lang.annotation.Retention;
22: import java.lang.annotation.Target;
23:
24: /**
25: * Optional, but typically used, annotation for service decorator methods, used to define which
26: * services the decorator applies to. This annotation defines a number of <em>patterns</em> that
27: * allow services across multiple modules to be selected. A decorator is applied to a service if any
28: * of its patterns match the service.
29: * <p>
30: * TODO: Describe pattern glob-match syntax
31: * <p>
32: * When the Match annotation is not supplied, then the decorator only applies to a single service:
33: * the service whose id matches the decorators id; that is, method <code>decorateMyService()</code>
34: * would decorate only the service provided by the <code>buildMyService()</code> method, within
35: * the same module.
36: *
37: *
38: */
39: @Target(METHOD)
40: @Retention(RUNTIME)
41: @Documented
42: public @interface Match {
43:
44: /**
45: * Defines a list of patterns matched against potential service ids to identify to which
46: * services the decorator applies. A decorator is applied if <em>any</em> of the patterns
47: * match.
48: */
49: String[] value();
50: }
|