blob: 0bfc58bf31420a5cab83805494c7dd28ca540a5a [file] [log] [blame]
Carsten Ziegeler5de92da2009-03-31 17:12:40 +00001/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19package org.apache.felix.scrplugin.annotations;
20
Carsten Ziegelerb5618fe2009-03-31 17:18:17 +000021import java.lang.annotation.*;
Carsten Ziegeler5de92da2009-03-31 17:12:40 +000022
23/**
24 * The <code>Component</code> annotation is the only required annotation. If
25 * this annotation is not declared in a Java class, the class is not declared as
26 * a component.
27 * <p>
28 * This annotation is used to declare the &lt;component&gt; element of the
29 * component declaration. See section 112.4.3, Component Element, in the OSGi
30 * Service Platform Service Compendium Specification for more information. The
31 * required &lt;implementation&gt; element is automatically generated with the
32 * fully qualified name of the class containing the <code>Component</code>
33 * annotation.
34 * </p>
35 */
36@Target(ElementType.TYPE)
Carsten Ziegelerb5618fe2009-03-31 17:18:17 +000037@Retention(RetentionPolicy.SOURCE)
Carsten Ziegeler5de92da2009-03-31 17:12:40 +000038public @interface Component {
39
40 /**
41 * Defines the Component name also used as the PID for the Configuration
42 * Admin Service. Default value: Fully qualified name of the Java class.
43 */
44 String name() default "";
45
46 /**
47 * This is generally used as a title for the object described by the meta
48 * type. This name may be localized by prepending a % sign to the name.
49 * Default value: %&lt;name&gt;.name
50 */
51 String label() default "";
52
53 /**
54 * This is generally used as a description for the object described by the
55 * meta type. This name may be localized by prepending a % sign to the name.
56 * Default value: %&lt;name&gt;.name
57 */
58 String description() default "";
59
60 /**
61 * Whether the component is enabled when the bundle starts.
62 */
63 boolean enabled() default true;
64
65 /**
66 * Whether the component is a factory component.
67 */
68 String factory() default "";
69
70 /**
71 * Whether the component is immediately activated.
72 */
73 boolean immediate() default false;
74
75 /**
76 * Whether any service, property and reference declarations from base
77 * classes should be inherited by this class.
78 */
79 boolean inherit() default true;
80
81 /**
82 * Whether Metatype Service data is generated or not. If this parameter is
83 * not set or set to true Metatype Service data is generated in the
84 * <code>metatype.xml</code> file for this component. Otherwise no Metatype
85 * Service data is generated for this component.
86 */
87 boolean metatype() default true;
88
89 /**
90 * This marks an abstract service description which is not added to the
91 * descriptor but intended for reuse through inheritance. This attribute
92 * defaults to true for abstract classes and false for concrete classes.
93 */
94 boolean componentAbstract() default false;
95
96 /**
97 * Whether Declarative Services descriptor is generated or not. If this
98 * parameter is not set or set to true the Declarative Services descriptor
99 * is generated in the service descriptor file for this component. Otherwise
100 * no Declarative Services descriptor is generated for this component.
101 */
102 boolean ds() default true;
103
104 /**
105 * Generated <code>service.pid</code> property by default, if none declared
106 * explicitly.
107 */
108 boolean createPid() default true;
109
110}