This is an automated email from the git hooks/post-receive script. ebourg-guest pushed a commit to branch master in repository osgi-compendium.
commit 127d61c41d6e76a4af8f93d9d1284aa60ab23c6c Author: Emmanuel Bourg <[email protected]> Date: Thu Dec 17 09:55:28 2015 +0100 Added new types from OSGi Compendium 6 required by BND 2.4.0 --- debian/changelog | 1 + debian/patches/01-osgi6-features.patch | 1274 ++++++++++++++++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 1276 insertions(+) diff --git a/debian/changelog b/debian/changelog index 9196ef9..e3eb9b2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ osgi-compendium (5.0.0-3) UNRELEASED; urgency=medium * Team upload. + * Added new types from OSGi Compendium 6 required by BND 2.4.0 * Transition to the Servlet API 3.1 -- Emmanuel Bourg <[email protected]> Wed, 16 Dec 2015 17:51:14 +0100 diff --git a/debian/patches/01-osgi6-features.patch b/debian/patches/01-osgi6-features.patch new file mode 100644 index 0000000..c753590 --- /dev/null +++ b/debian/patches/01-osgi6-features.patch @@ -0,0 +1,1274 @@ +Description: Add new types from OSGi Compendium 6 required by BND 2.4.0 +Origin: backport, http://repo1.maven.org/maven2/org/osgi/org.osgi.service.component.annotations/1.3.0/org.osgi.service.component.annotations-1.3.0-sources.jar + http://repo1.maven.org/maven2/org/osgi/org.osgi.service.metatype.annotations/1.3.0/org.osgi.service.metatype.annotations-1.3.0-sources.jar +--- a/org/osgi/service/component/annotations/Component.java ++++ b/org/osgi/service/component/annotations/Component.java +@@ -183,18 +183,82 @@ + ConfigurationPolicy configurationPolicy() default ConfigurationPolicy.OPTIONAL; + + /** +- * The configuration PID for the configuration of this Component. ++ * The configuration PIDs for the configuration of this Component. + * + * <p> +- * Allows the configuration PID for this Component to be different than the +- * name of this Component. ++ * Each value specifies a configuration PID for this Component. + * + * <p> +- * If not specified, the name of this Component is used as the configuration +- * PID of this Component. ++ * If no value is specified, the name of this Component is used as the ++ * configuration PID of this Component. ++ * ++ * <p> ++ * A special string (<code>{@value #NAME}</code>) can be used to specify the ++ * name of the component as a configuration PID. The {@code NAME} constant ++ * holds this special string. For example: ++ * ++ * <pre> ++ * @Component(configurationPid={"com.acme.system", Component.NAME}) ++ * </pre> ++ * ++ * Tools creating a Component Description from this annotation must replace ++ * the special string with the actual name of this Component. + * + * @see "The configuration-pid attribute of the component element of a Component Description." + * @since 1.2 + */ +- String configurationPid() default ""; ++ String[] configurationPid() default NAME; ++ ++ /** ++ * Special string representing the name of this Component. ++ * ++ * <p> ++ * This string can be used in {@link #configurationPid()} to specify the ++ * name of the component as a configuration PID. For example: ++ * ++ * <pre> ++ * @Component(configurationPid={"com.acme.system", Component.NAME}) ++ * </pre> ++ * ++ * Tools creating a Component Description from this annotation must replace ++ * the special string with the actual name of this Component. ++ * ++ * @since 1.3 ++ */ ++ String NAME = "$"; ++ ++ /** ++ * The service scope for the service of this Component. ++ * ++ * <p> ++ * If not specified (and the deprecated {@link #servicefactory()} element is ++ * not specified), the {@link ServiceScope#SINGLETON singleton} service ++ * scope is used. If the {@link #factory()} element is specified or the ++ * {@link #immediate()} element is specified with {@code true}, this element ++ * can only be specified with the {@link ServiceScope#SINGLETON singleton} ++ * service scope. ++ * ++ * @see "The scope attribute of the service element of a Component Description." ++ * @since 1.3 ++ */ ++ ServiceScope scope() default ServiceScope.DEFAULT; ++ ++ /** ++ * The lookup strategy references of this Component. ++ * ++ * <p> ++ * To access references using the lookup strategy, {@link Reference} ++ * annotations are specified naming the reference and declaring the type of ++ * the referenced service. The referenced service can be accessed using one ++ * of the {@code locateService} methods of {@code ComponentContext}. ++ * ++ * <p> ++ * To access references using the event strategy, bind methods are annotated ++ * with {@link Reference}. To access references using the field strategy, ++ * fields are annotated with {@link Reference}. ++ * ++ * @see "The reference element of a Component Description." ++ * @since 1.3 ++ */ ++ Reference[] reference() default {}; + } +--- /dev/null ++++ b/org/osgi/service/component/annotations/FieldOption.java +@@ -0,0 +1,54 @@ ++/* ++ * Copyright (c) OSGi Alliance (2014, 2015). All Rights Reserved. ++ * ++ * Licensed 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.osgi.service.component.annotations; ++ ++/** ++ * Field options for the {@link Reference} annotation. ++ * ++ * @since 1.3 ++ * @author $Id: 35bfd6c67110ff6c5cd5c9c1764398e4024dbb59 $ ++ */ ++public enum FieldOption { ++ ++ /** ++ * The update field option is used to update the collection referenced by ++ * the field when there are changes to the bound services. ++ * ++ * <p> ++ * This field option can only be used when the field reference has dynamic ++ * policy and multiple cardinality. ++ */ ++ UPDATE("update"), ++ ++ /** ++ * The replace field option is used to replace the field value with a new ++ * value when there are changes to the bound services. ++ */ ++ REPLACE("replace"); ++ ++ private final String value; ++ ++ FieldOption(String value) { ++ this.value = value; ++ } ++ ++ @Override ++ public String toString() { ++ return value; ++ } ++} ++ +--- /dev/null ++++ b/org/osgi/service/component/annotations/LookupReference.java +@@ -0,0 +1,112 @@ ++/* ++ * Copyright (c) OSGi Alliance (2013). All Rights Reserved. ++ * ++ * Licensed 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.osgi.service.component.annotations; ++ ++import java.lang.annotation.Retention; ++import java.lang.annotation.RetentionPolicy; ++import java.lang.annotation.Target; ++ ++/** ++ * Define a lookup strategy reference for a {@link Component}. ++ * ++ * <p> ++ * The referenced service can be accessed using one of the {@code locateService} ++ * methods of {@code ComponentContext}. ++ * ++ * <p> ++ * This annotation is not processed at runtime by a Service Component Runtime ++ * implementation. It must be processed by tools and used to add a Component ++ * Description to the bundle. ++ * ++ * <p> ++ * In the generated Component Description for a component, the references must ++ * be ordered in ascending lexicographical order (using {@code String.compareTo} ++ * ) of the reference {@link #name() name}s. ++ * ++ * @see "The reference element of a Component Description." ++ * @author $Id: 39a18d2d533af21bee40e41d09b8d5a8405e100b $ ++ * @since 1.3 ++ */ ++@Retention(RetentionPolicy.CLASS) ++@Target({}) ++public @interface LookupReference { ++ /** ++ * The name of this reference. ++ * ++ * @see "The name attribute of the reference element of a Component Description." ++ */ ++ String name(); ++ ++ /** ++ * The type of the service to bind to this reference. ++ * ++ * @see "The interface attribute of the reference element of a Component Description." ++ */ ++ Class<?> service(); ++ ++ /** ++ * The cardinality of the reference. ++ * ++ * <p> ++ * If not specified, the reference has a ++ * {@link ReferenceCardinality#MANDATORY 1..1} cardinality. ++ * ++ * @see "The cardinality attribute of the reference element of a Component Description." ++ */ ++ ReferenceCardinality cardinality() default ReferenceCardinality.MANDATORY; ++ ++ /** ++ * The policy for the reference. ++ * ++ * <p> ++ * If not specified, the {@link ReferencePolicy#STATIC STATIC} reference ++ * policy is used. ++ * ++ * @see "The policy attribute of the reference element of a Component Description." ++ */ ++ ReferencePolicy policy() default ReferencePolicy.STATIC; ++ ++ /** ++ * The target filter for the reference. ++ * ++ * @see "The target attribute of the reference element of a Component Description." ++ */ ++ String target() default ""; ++ ++ /** ++ * The policy option for the reference. ++ * ++ * <p> ++ * If not specified, the {@link ReferencePolicyOption#RELUCTANT RELUCTANT} ++ * reference policy option is used. ++ * ++ * @see "The policy-option attribute of the reference element of a Component Description." ++ */ ++ ReferencePolicyOption policyOption() default ReferencePolicyOption.RELUCTANT; ++ ++ /** ++ * The requested service scope for this Reference. ++ * ++ * <p> ++ * If not specified, the {@link ReferenceScope#BUNDLE bundle} service scope ++ * is requested. ++ * ++ * @see "The scope attribute of the reference element of a Component Description." ++ */ ++ ReferenceScope scope() default ReferenceScope.BUNDLE; ++} ++ +--- a/org/osgi/service/component/annotations/Reference.java ++++ b/org/osgi/service/component/annotations/Reference.java +@@ -42,7 +42,7 @@ + * @author $Id: 9887c51c74905b29393f0b2fe7cf5f9a40eb3d72 $ + */ + @Retention(RetentionPolicy.CLASS) +-@Target(ElementType.METHOD) ++@Target({ElementType.METHOD, ElementType.FIELD}) + public @interface Reference { + /** + * The name of this reference. +@@ -97,11 +97,19 @@ + String target() default ""; + + /** +- * The name of the unbind method which is associated with the annotated bind +- * method. ++ * The policy option for this reference. + * + * <p> +- * To declare no unbind method, the value {@code "-"} must be used. ++ * If not specified, the {@link ReferencePolicyOption#RELUCTANT RELUCTANT} ++ * reference policy option is used. ++ * ++ * @see "The policy-option attribute of the reference element of a Component Description." ++ * @since 1.2 ++ */ ++ ReferencePolicyOption policyOption() default ReferencePolicyOption.RELUCTANT; ++ ++ /** ++ * The reference scope for this reference. + * + * <p> + * If not specified, the name of the unbind method is derived from the name +@@ -113,21 +121,39 @@ + * is only set if the component type contains a method with the derived + * name. + * +- * @see "The unbind attribute of the reference element of a Component Description." ++ * @see "The scope attribute of the reference element of a Component Description." ++ * @since 1.3 + */ +- String unbind() default ""; ++ ReferenceScope scope() default ReferenceScope.BUNDLE; ++ ++ /* Method injection elements */ + + /** +- * The policy option for the reference. ++ * The name of the bind method for this reference. + * + * <p> + * If not specified, the {@link ReferencePolicyOption#RELUCTANT RELUCTANT} + * reference policy option is used. + * +- * @see "The policy-option attribute of the reference element of a Component Description." +- * @since 1.2 ++ * <p> ++ * If not specified, the name of the bind method is based upon how this ++ * annotation is used: ++ * <ul> ++ * <li>Annotated method - The name of the annotated method is the name of ++ * the bind method.</li> ++ * <li>Annotated field - There is no bind method name.</li> ++ * <li>{@link Component#reference()} element - There is no bind method name. ++ * </li> ++ * </ul> ++ * ++ * <p> ++ * If there is a bind method name, the component must contain a method with ++ * that name. ++ * ++ * @see "The bind attribute of the reference element of a Component Description." ++ * @since 1.3 + */ +- ReferencePolicyOption policyOption() default ReferencePolicyOption.RELUCTANT; ++ String bind() default ""; + + /** + * The name of the updated method which is associated with the annotated +@@ -149,4 +175,85 @@ + * @since 1.2 + */ + String updated() default ""; ++ ++ /** ++ * The name of the unbind method for this reference. ++ * ++ * <p> ++ * If not specified, the name of the unbind method is based upon how this ++ * annotation is used: ++ * <ul> ++ * <li>Annotated method - The name of the unbind method is created from the ++ * name of the annotated method. If the name of the annotated method begins ++ * with {@code bind}, {@code set} or {@code add}, that prefix is replaced ++ * with {@code unbind}, {@code unset} or {@code remove}, respectively, to ++ * create the name candidate for the unbind method. Otherwise, {@code un} is ++ * prefixed to the name of the annotated method to create the name candidate ++ * for the unbind method. If the component type contains a method with the ++ * candidate name, the candidate name is used as the name of the unbind ++ * method. To declare no unbind method when the component type contains a ++ * method with the candidate name, the value {@code "-"} must be used.</li> ++ * <li>Annotated field - There is no unbind method name.</li> ++ * <li>{@link Component#reference()} element - There is no unbind method ++ * name.</li> ++ * </ul> ++ * ++ * <p> ++ * If there is an unbind method name, the component must contain a method ++ * with that name. ++ * ++ * @see "The unbind attribute of the reference element of a Component Description." ++ */ ++ String unbind() default ""; ++ ++ /* Field injection elements */ ++ ++ /** ++ * The name of the field for this reference. ++ * ++ * <p> ++ * If specified and this reference annotates a field, the specified name ++ * must match the name of the annotated field. ++ * ++ * <p> ++ * If not specified, the name of the field is based upon how this annotation ++ * is used: ++ * <ul> ++ * <li>Annotated method - There is no field name.</li> ++ * <li>Annotated field - The name of the annotated field is the name of the ++ * field.</li> ++ * <li>{@link Component#reference()} element - There is no field name.</li> ++ * </ul> ++ * ++ * <p> ++ * If there is a field name, the component must contain a field with that ++ * name. ++ * ++ * @see "The field attribute of the reference element of a Component Description." ++ * @since 1.3 ++ */ ++ String field() default ""; ++ ++ /** ++ * The field option for this reference. ++ * ++ * <p> ++ * If not specified, the field option is based upon how this annotation is ++ * used: ++ * <ul> ++ * <li>Annotated method - There is no field option.</li> ++ * <li>Annotated field - The field option is based upon the policy and ++ * cardinality of the reference and the modifiers of the field. If the ++ * policy is {@link ReferencePolicy#DYNAMIC}, the cardinality is ++ * {@link ReferenceCardinality#MULTIPLE 0..n} or ++ * {@link ReferenceCardinality#AT_LEAST_ONE 1..n}, and the field is declared ++ * {@code final}, the field option is {@link FieldOption#UPDATE}. Otherwise, ++ * the field option is {@link FieldOption#REPLACE}</li> ++ * <li>{@link Component#reference()} element - There is no field option.</li> ++ * </ul> ++ * ++ * @see "The field-option attribute of the reference element of a Component Description." ++ * @since 1.3 ++ */ ++ FieldOption fieldOption() default FieldOption.REPLACE; + } +--- /dev/null ++++ b/org/osgi/service/component/annotations/ReferenceScope.java +@@ -0,0 +1,57 @@ ++/* ++ * Copyright (c) OSGi Alliance (2013, 2014). All Rights Reserved. ++ * ++ * Licensed 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.osgi.service.component.annotations; ++ ++/** ++ * Reference scope for the {@link Reference} annotation. ++ * ++ * @author $Id: 2a61ef265cfb7a771bd86710e2319a49ae548f3e $ ++ * @since 1.3 ++ */ ++public enum ReferenceScope { ++ /** ++ * A single service object is used for all references to the service in this ++ * bundle. ++ */ ++ BUNDLE("bundle"), ++ ++ /** ++ * If the bound service has prototype service scope, then each instance of ++ * the component with this reference can receive a unique instance of the ++ * service. If the bound service does not have prototype service scope, then ++ * this reference scope behaves the same as {@link #BUNDLE}. ++ */ ++ PROTOTYPE("prototype"), ++ ++ /** ++ * Bound services must have prototype service scope. Each instance of the ++ * component with this reference can receive a unique instance of the ++ * service. ++ */ ++ PROTOTYPE_REQUIRED("prototype_required"); ++ ++ private final String value; ++ ++ ReferenceScope(String value) { ++ this.value = value; ++ } ++ ++ @Override ++ public String toString() { ++ return value; ++ } ++} +--- /dev/null ++++ b/org/osgi/service/component/annotations/ServiceScope.java +@@ -0,0 +1,64 @@ ++/* ++ * Copyright (c) OSGi Alliance (2011, 2014). All Rights Reserved. ++ * ++ * Licensed 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.osgi.service.component.annotations; ++ ++/** ++ * Service scope for the {@link Component} annotation. ++ * ++ * @author $Id: 3c43d5feab4f5f8782acd72b0461feab464db2f8 $ ++ * @since 1.3 ++ */ ++public enum ServiceScope { ++ /** ++ * When the component is registered as a service, it must be registered as a ++ * bundle scope service but only a single instance of the component must be ++ * used for all bundles using the service. ++ */ ++ SINGLETON("singleton"), ++ ++ /** ++ * When the component is registered as a service, it must be registered as a ++ * bundle scope service and an instance of the component must be created for ++ * each bundle using the service. ++ */ ++ BUNDLE("bundle"), ++ ++ /** ++ * When the component is registered as a service, it must be registered as a ++ * prototype scope service and an instance of the component must be created ++ * for each distinct request for the service. ++ */ ++ PROTOTYPE("prototype"), ++ ++ /** ++ * Default element value for annotation. This is used to distinguish the ++ * default value for an element and should not otherwise be used. ++ */ ++ DEFAULT("<<default>>"); ++ ++ private final String value; ++ ++ ServiceScope(String value) { ++ this.value = value; ++ } ++ ++ @Override ++ public String toString() { ++ return value; ++ } ++} ++ +--- /dev/null ++++ b/org/osgi/service/metatype/annotations/AttributeDefinition.java +@@ -0,0 +1,217 @@ ++/* ++ * Copyright (c) OSGi Alliance (2013, 2014). All Rights Reserved. ++ * ++ * Licensed 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.osgi.service.metatype.annotations; ++ ++import java.lang.annotation.ElementType; ++import java.lang.annotation.Retention; ++import java.lang.annotation.RetentionPolicy; ++import java.lang.annotation.Target; ++ ++/** ++ * {@code AttributeDefinition} information for the annotated method. ++ * ++ * <p> ++ * Each method of a type annotated by {@link ObjectClassDefinition} has an ++ * implied AttributeDefinition annotation. This annotation is only used to ++ * specify non-default AttributeDefinition information. ++ * ++ * <p> ++ * The {@code id} of this AttributeDefinition is generated from the name of the ++ * annotated method. The annotated method name is processed from left to right ++ * changing each character as follows: ++ * <ul> ++ * <li>A dollar sign ({@code '$'} \u0024) is removed unless it is followed ++ * by another dollar sign in which case the two consecutive dollar signs ( ++ * {@code '$$'}) are changed to a single dollar sign.</li> ++ * <li>A low line ({@code '_'} \u005F) is changed to a full stop ( ++ * {@code '.'} \u002E) unless is it followed by another low line in which ++ * case the two consecutive low lines ({@code '__'}) are changed to a single low ++ * line.</li> ++ * <li>All other characters are unchanged.</li> ++ * </ul> ++ * This id is the value of the id attribute of the generate AD element and is ++ * used as the name of the corresponding configuration property. ++ * ++ * <p> ++ * This annotation is not processed at runtime. It must be processed by tools ++ * and used to contribute to a Meta Type Resource document for the bundle. ++ * ++ * @see "The AD element of a Meta Type Resource." ++ * @author $Id: 366d21759b5562656dc97a391f61181970d71ec7 $ ++ */ ++@Retention(RetentionPolicy.CLASS) ++@Target(ElementType.METHOD) ++public @interface AttributeDefinition { ++ /** ++ * The human readable name of this AttributeDefinition. ++ * ++ * <p> ++ * If not specified, the name of this AttributeDefinition is derived from ++ * the name of the annotated method. For example, low line ({@code '_'} ++ * \u005F) and dollar sign ({@code '$'} \u0024) are replaced with ++ * space ({@code ' '} \u0020) and space is inserted between camel case ++ * words. ++ * ++ * <p> ++ * If the name begins with the percent sign ({@code '%'} \u0025), the ++ * name can be {@link ObjectClassDefinition#localization() localized}. ++ * ++ * @see "The name attribute of the AD element of a Meta Type Resource." ++ */ ++ String name() default ""; ++ ++ /** ++ * The human readable description of this AttributeDefinition. ++ * ++ * <p> ++ * If not specified, the description of this AttributeDefinition is the ++ * empty string. ++ * ++ * <p> ++ * If the description begins with the percent sign ({@code '%'} \u0025), ++ * the description can be {@link ObjectClassDefinition#localization() ++ * localized}. ++ * ++ * @see "The description attribute of the AD element of a Meta Type Resource." ++ */ ++ String description() default ""; ++ ++ /** ++ * The type of this AttributeDefinition. ++ * ++ * <p> ++ * This must be one of the defined {@link AttributeType attributes types}. ++ * ++ * <p> ++ * If not specified, the type is derived from the return type of the ++ * annotated method. Return types of {@code Class} and {@code Enum} are ++ * mapped to {@link AttributeType#STRING STRING}. If the return type is ++ * {@code List}, {@code Set}, {@code Collection}, {@code Iterable} or some ++ * type which can be determined at annotation processing time to ++ * <ol> ++ * <li>be a subtype of {@code Collection} and</li> ++ * <li>have a public no argument constructor,</li> ++ * </ol> ++ * then the type is derived from the generic type. For example, a return ++ * type of {@code List<String>} will be mapped to ++ * {@link AttributeType#STRING STRING}. A return type of a single ++ * dimensional array is supported and the type is the component type of the ++ * array. Multi dimensional arrays are not supported. Annotation return ++ * types are not supported. Any unrecognized type is mapped to ++ * {@link AttributeType#STRING STRING}. A tool processing the annotation ++ * should declare an error for unsupported return types. ++ * ++ * @see "The type attribute of the AD element of a Meta Type Resource." ++ */ ++ AttributeType type() default AttributeType.STRING; ++ ++ /** ++ * The cardinality of this AttributeDefinition. ++ * ++ * <p> ++ * If not specified, the cardinality is derived from the return type of the ++ * annotated method. For an array return type, the cardinality is a large ++ * positive value. If the return type is {@code List}, {@code Set}, ++ * {@code Collection}, {@code Iterable} or some type which can be determined ++ * at annotation processing time to ++ * <ol> ++ * <li>be a subtype of {@code Collection} and</li> ++ * <li>have a public no argument constructor,</li> ++ * </ol> ++ * the cardinality is a large negative value. Otherwise, the cardinality is ++ * 0. ++ * ++ * @see "The cardinality attribute of the AD element of a Meta Type Resource." ++ */ ++ int cardinality() default 0; ++ ++ /** ++ * The minimum value for this AttributeDefinition. ++ * ++ * <p> ++ * If not specified, there is no minimum value. ++ * ++ * @see "The min attribute of the AD element of a Meta Type Resource." ++ */ ++ String min() default ""; ++ ++ /** ++ * The maximum value for this AttributeDefinition. ++ * ++ * <p> ++ * If not specified, there is no maximum value. ++ * ++ * @see "The max attribute of the AD element of a Meta Type Resource." ++ */ ++ String max() default ""; ++ ++ /** ++ * The default value for this AttributeDefinition. ++ * ++ * <p> ++ * The specified values are concatenated into a comma delimited list to ++ * become the value of the {@code default} attribute of the generated ++ * {@code AD} element. ++ * ++ * <p> ++ * If not specified and the annotated method is an annotation element that ++ * has a {@code default} value, then the value of this element is the ++ * {@code default} value of the annotated element. Otherwise, there is no ++ * default value. ++ * ++ * @see "The default attribute of the AD element of a Meta Type Resource." ++ */ ++ String[] defaultValue() default {}; ++ ++ /** ++ * The required value for this AttributeDefinition. ++ * ++ * <p> ++ * If not specified, the value is {@code true}. ++ * ++ * @see "The required attribute of the AD element of a Meta Type Resource." ++ */ ++ boolean required() default true; ++ ++ /** ++ * The option information for this AttributeDefinition. ++ * ++ * <p> ++ * For each specified {@link Option}, an {@code Option} element is generated ++ * for this AttributeDefinition. ++ * ++ * <p> ++ * If not specified, the option information is derived from the return type ++ * of the annotated method. If the return type is an {@code enum}, a single ++ * dimensional array of an {@code enum}, or a {@code List}, {@code Set}, ++ * {@code Collection}, {@code Iterable} or some type which can be determined ++ * at annotation processing time to ++ * <ol> ++ * <li>be a subtype of {@code Collection} and</li> ++ * <li>have a public no argument constructor,</li> ++ * </ol> ++ * with a generic type of an {@code enum}, then the value of this element ++ * has an {@link Option} for each value of the {@code enum}. The label and ++ * value of each {@link Option} are set to the name of the corresponding ++ * {@code enum} value. Otherwise, no {@code Option} elements will be ++ * generated. ++ * ++ * @see "The Option element of a Meta Type Resource." ++ */ ++ Option[] options() default {}; ++} ++ +--- /dev/null ++++ b/org/osgi/service/metatype/annotations/AttributeType.java +@@ -0,0 +1,142 @@ ++/* ++ * Copyright (c) OSGi Alliance (2013). All Rights Reserved. ++ * ++ * Licensed 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.osgi.service.metatype.annotations; ++ ++/** ++ * Attribute types for the {@link AttributeDefinition} annotation. ++ * ++ * @see AttributeDefinition#type() ++ * @author $Id: 9ab62c08937c0f76ba6465cb95e4cd5cf6ca8e8f $ ++ */ ++public enum AttributeType { ++ /** ++ * The {@code String} type. ++ * ++ * <p> ++ * Attributes of this type should be stored as {@code String}, ++ * {@code List<String>} or {@code String[]} objects, depending on the ++ * {@link AttributeDefinition#cardinality() cardinality} value. ++ */ ++ STRING("String"), ++ ++ /** ++ * The {@code Long} type. ++ * ++ * <p> ++ * Attributes of this type should be stored as {@code Long}, ++ * {@code List<Long>} or {@code long[]} objects, depending on the ++ * {@code AttributeDefinition#cardinality() cardinality} value. ++ */ ++ LONG("Long"), ++ ++ /** ++ * The {@code Integer} type. ++ * ++ * <p> ++ * Attributes of this type should be stored as {@code Integer}, ++ * {@code List<Integer>} or {@code int[]} objects, depending on the ++ * {@code AttributeDefinition#cardinality() cardinality} value. ++ */ ++ INTEGER("Integer"), ++ ++ /** ++ * The {@code Short} type. ++ * ++ * <p> ++ * Attributes of this type should be stored as {@code Short}, ++ * {@code List<Short>} or {@code short[]} objects, depending on the ++ * {@code AttributeDefinition#cardinality() cardinality} value. ++ */ ++ SHORT("Short"), ++ ++ /** ++ * The {@code Character} type. ++ * ++ * <p> ++ * Attributes of this type should be stored as {@code Character}, ++ * {@code List<Character>} or {@code char[]} objects, depending on the ++ * {@code AttributeDefinition#cardinality() cardinality} value. ++ */ ++ CHARACTER("Character"), ++ ++ /** ++ * The {@code Byte} type. ++ * ++ * <p> ++ * Attributes of this type should be stored as {@code Byte}, ++ * {@code List<Byte>} or {@code byte[]} objects, depending on the ++ * {@code AttributeDefinition#cardinality() cardinality} value. ++ */ ++ BYTE("Byte"), ++ ++ /** ++ * The {@code Double} type. ++ * ++ * <p> ++ * Attributes of this type should be stored as {@code Double}, ++ * {@code List<Double>} or {@code double[]} objects, depending on the ++ * {@code AttributeDefinition#cardinality() cardinality} value. ++ */ ++ DOUBLE("Double"), ++ ++ /** ++ * The {@code Float} type. ++ * ++ * <p> ++ * Attributes of this type should be stored as {@code Float}, ++ * {@code List<Float>} or {@code float[]} objects, depending on the ++ * {@code AttributeDefinition#cardinality() cardinality} value. ++ */ ++ FLOAT("Float"), ++ ++ /** ++ * The {@code Boolean} type. ++ * ++ * <p> ++ * Attributes of this type should be stored as {@code Boolean}, ++ * {@code List<Boolean>} or {@code boolean[]} objects depending on ++ * {@code AttributeDefinition#cardinality() cardinality}. ++ */ ++ BOOLEAN("Boolean"), ++ ++ /** ++ * The {@code Password} type. ++ * ++ * <p> ++ * Attributes of this type must be stored as {@code String}, ++ * {@code List<String>} or {@code String[]} objects depending on ++ * {@link AttributeDefinition#cardinality() cardinality}. ++ * ++ * <p> ++ * A {@code Password} must be treated as a {@code String} but the type can ++ * be used to disguise the information when displayed to a user to prevent ++ * it from being seen. ++ */ ++ PASSWORD("Password"); ++ ++ private final String value; ++ ++ AttributeType(String value) { ++ this.value = value; ++ } ++ ++ @Override ++ public String toString() { ++ return value; ++ } ++} ++ +--- /dev/null ++++ b/org/osgi/service/metatype/annotations/Designate.java +@@ -0,0 +1,69 @@ ++/* ++ * Copyright (c) OSGi Alliance (2014). All Rights Reserved. ++ * ++ * Licensed 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.osgi.service.metatype.annotations; ++ ++import java.lang.annotation.ElementType; ++import java.lang.annotation.Retention; ++import java.lang.annotation.RetentionPolicy; ++import java.lang.annotation.Target; ++ ++/** ++ * Generate a {@code Designate} element in the Meta Type Resource for an ++ * {@link ObjectClassDefinition} using the annotated Declarative Services ++ * component. ++ * ++ * <p> ++ * This annotation must be used on a type that is also annotated with the ++ * Declarative Services {@link org.osgi.service.component.annotations.Component ++ * Component} annotation. The component must only have a single PID which is ++ * used for the generated {@code Designate} element. ++ * ++ * <p> ++ * This annotation is not processed at runtime. It must be processed by tools ++ * and used to contribute to a Meta Type Resource document for the bundle. ++ * ++ * @see "The Designate element of a Meta Type Resource." ++ * @author $Id: 99cf054e1e37e4114494d492910fc2a2dc57ab0a $ ++ */ ++@Retention(RetentionPolicy.CLASS) ++@Target(ElementType.TYPE) ++public @interface Designate { ++ /** ++ * The type of the {@link ObjectClassDefinition} for this Designate. ++ * ++ * <p> ++ * The specified type must be annotated with {@link ObjectClassDefinition}. ++ * ++ * @see "The ocdref attribute of the Designate element of a Meta Type Resource." ++ */ ++ Class<?> ocd(); ++ ++ /** ++ * Specifies whether this Designate is for a factory PID. ++ * ++ * <p> ++ * If {@code false}, then the PID value from the annotated component will be ++ * used in the {@code pid} attribute of the generated {@code Designate} ++ * element. If {@code true}, then the PID value from the annotated component ++ * will be used in the {@code factoryPid} attribute of the generated ++ * {@code Designate} element. ++ * ++ * @see "The pid and factoryPid attributes of the Designate element of a Meta Type Resource." ++ */ ++ boolean factory() default false; ++} ++ +--- /dev/null ++++ b/org/osgi/service/metatype/annotations/Icon.java +@@ -0,0 +1,59 @@ ++/* ++ * Copyright (c) OSGi Alliance (2013). All Rights Reserved. ++ * ++ * Licensed 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.osgi.service.metatype.annotations; ++ ++import java.lang.annotation.Retention; ++import java.lang.annotation.RetentionPolicy; ++import java.lang.annotation.Target; ++ ++/** ++ * {@code Icon} information for an {@link ObjectClassDefinition}. ++ * ++ * @see ObjectClassDefinition#icon() ++ * @author $Id: e9e89ed20e3fc24a1f1e74324fe2b717ebecad45 $ ++ */ ++@Retention(RetentionPolicy.CLASS) ++@Target({}) ++public @interface Icon { ++ ++ /** ++ * The resource name for this Icon. ++ * ++ * <p> ++ * The resource is a URL. The resource URL can be relative to the root of ++ * the bundle containing the Meta Type Resource. ++ * ++ * <p> ++ * If the resource begins with the percent sign ({@code '%'} \u0025), ++ * the resource can be {@link ObjectClassDefinition#localization() ++ * localized}. ++ * ++ * @see "The resource attribute of the Icon element of a Meta Type Resource." ++ */ ++ String resource(); ++ ++ /** ++ * The pixel size of this Icon. ++ * ++ * <p> ++ * For example, 32 represents a 32x32 icon. ++ * ++ * @see "The size attribute of the Icon element of a Meta Type Resource." ++ */ ++ int size(); ++} ++ +--- /dev/null ++++ b/org/osgi/service/metatype/annotations/ObjectClassDefinition.java +@@ -0,0 +1,156 @@ ++/* ++ * Copyright (c) OSGi Alliance (2013, 2014). All Rights Reserved. ++ * ++ * Licensed 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.osgi.service.metatype.annotations; ++ ++import java.lang.annotation.ElementType; ++import java.lang.annotation.Retention; ++import java.lang.annotation.RetentionPolicy; ++import java.lang.annotation.Target; ++ ++/** ++ * Generate a Meta Type Resource using the annotated type. ++ * ++ * <p> ++ * This annotation can be used without defining any element values since ++ * defaults can be generated from the annotated type. Each method of the ++ * annotated type has an implied {@link AttributeDefinition} annotation if not ++ * explicitly annotated. ++ * ++ * <p> ++ * This annotation may only be used on annotation types and interface types. Use ++ * on concrete or abstract class types is unsupported. If applied to an ++ * interface then all methods inherited from super types are included as ++ * attributes. ++ * ++ * <p> ++ * This annotation is not processed at runtime. It must be processed by tools ++ * and used to generate a Meta Type Resource document for the bundle. ++ * ++ * @see "The OCD element of a Meta Type Resource." ++ * @author $Id: fa6a22c95ba6d3a19845177e3b8375c4064ded9a $ ++ */ ++@Retention(RetentionPolicy.CLASS) ++@Target(ElementType.TYPE) ++public @interface ObjectClassDefinition { ++ /** ++ * The id of this ObjectClassDefinition. ++ * ++ * <p> ++ * If not specified, the id of this ObjectClassDefinition is the fully ++ * qualified name of the annotated type using the dollar sign ({@code '$'} ++ * \u0024) to separate nested class names from the name of their ++ * enclosing class. The id is not to be confused with a PID which can be ++ * specified by the {@link #pid()} or {@link #factoryPid()} element. ++ * ++ * @see "The id attribute of the OCD element of a Meta Type Resource." ++ */ ++ String id() default ""; ++ ++ /** ++ * The human readable name of this ObjectClassDefinition. ++ * ++ * <p> ++ * If not specified, the name of this ObjectClassDefinition is derived from ++ * the {@link #id()}. For example, low line ({@code '_'} \u005F) and ++ * dollar sign ({@code '$'} \u0024) are replaced with space ({@code ' '} ++ * \u0020) and space is inserted between camel case words. ++ * ++ * <p> ++ * If the name begins with the percent sign ({@code '%'} \u0025), the ++ * name can be {@link #localization() localized}. ++ * ++ * @see "The name attribute of the OCD element of a Meta Type Resource." ++ */ ++ String name() default ""; ++ ++ /** ++ * The human readable description of this ObjectClassDefinition. ++ * ++ * <p> ++ * If not specified, the description of this ObjectClassDefinition is the ++ * empty string. ++ * ++ * <p> ++ * If the description begins with the percent sign ({@code '%'} \u0025), ++ * the description can be {@link #localization() localized}. ++ * ++ * @see "The description attribute of the OCD element of a Meta Type Resource." ++ */ ++ String description() default ""; ++ ++ /** ++ * The localization resource of this ObjectClassDefinition. ++ * ++ * <p> ++ * This refers to a resource property entry in the bundle that can be ++ * augmented with locale information. If not specified, the localization ++ * resource for this ObjectClassDefinition is the string ++ * "OSGI-INF/l10n/" followed by the {@link #id()}. ++ * ++ * @see "The localization attribute of the MetaData element of a Meta Type Resource." ++ */ ++ String localization() default ""; ++ ++ /** ++ * The PIDs associated with this ObjectClassDefinition. ++ * ++ * <p> ++ * For each specified PID, a {@code Designate} element with a pid attribute ++ * is generated that {@link #id() references} this ObjectClassDefinition. ++ * ++ * <p> ++ * The {@link Designate} annotation can also be used to associate a ++ * Declarative Services component with an ObjectClassDefinition and generate ++ * a {@code Designate} element. ++ * ++ * @see "The pid attribute of the Designate element of a Meta Type Resource." ++ * @see Designate ++ */ ++ String[] pid() default {}; ++ ++ /** ++ * The factory PIDs associated with this ObjectClassDefinition. ++ * ++ * <p> ++ * For each specified factory PID, a {@code Designate} element with a ++ * factoryPid attribute is generated that {@link #id() references} this ++ * ObjectClassDefinition. ++ * ++ * <p> ++ * The {@link Designate} annotation can also be used to associate a ++ * Declarative Services component with an ObjectClassDefinition and generate ++ * a {@code Designate} element. ++ * ++ * ++ * @see "The factoryPid attribute of the Designate element of a Meta Type Resource." ++ * @see Designate ++ */ ++ String[] factoryPid() default {}; ++ ++ /** ++ * The icon resources associated with this ObjectClassDefinition. ++ * ++ * <p> ++ * For each specified {@link Icon}, an {@code Icon} element is generated for ++ * this ObjectClassDefinition. If not specified, no {@code Icon} elements ++ * will be generated. ++ * ++ * @see "The Icon element of a Meta Type Resource." ++ */ ++ Icon[] icon() default {}; ++} ++ +--- /dev/null ++++ b/org/osgi/service/metatype/annotations/Option.java +@@ -0,0 +1,54 @@ ++/* ++ * Copyright (c) OSGi Alliance (2013). All Rights Reserved. ++ * ++ * Licensed 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.osgi.service.metatype.annotations; ++ ++import java.lang.annotation.Retention; ++import java.lang.annotation.RetentionPolicy; ++import java.lang.annotation.Target; ++ ++/** ++ * {@code Option} information for an {@link AttributeDefinition}. ++ * ++ * @see AttributeDefinition#options() ++ * @author $Id: 62ba7da6da943cb1b3d124a36c9861277c93a740 $ ++ */ ++@Retention(RetentionPolicy.CLASS) ++@Target({}) ++public @interface Option { ++ ++ /** ++ * The human readable label of this Option. ++ * ++ * <p> ++ * If not specified, the label of this Option is the empty string. ++ * ++ * <p> ++ * If the label begins with the percent sign ({@code '%'} \u0025), the ++ * label can be {@link ObjectClassDefinition#localization() localized}. ++ * ++ * @see "The label attribute of the Option element of a Meta Type Resource." ++ */ ++ String label() default ""; ++ ++ /** ++ * The value of this Option. ++ * ++ * @see "The value attribute of the Option element of a Meta Type Resource." ++ */ ++ String value(); ++} ++ diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..973bb18 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +01-osgi6-features.patch -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/osgi-compendium.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

