All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.osgi.annotation.bundle.Attribute Maven / Gradle / Ivy

Go to download

AspectJ tools most notably contains the AspectJ compiler (AJC). AJC applies aspects to Java classes during compilation, fully replacing Javac for plain Java classes and also compiling native AspectJ or annotation-based @AspectJ syntax. Furthermore, AJC can weave aspects into existing class files in a post-compile binary weaving step. This library is a superset of AspectJ weaver and hence also of AspectJ runtime.

There is a newer version: 1.9.22.1
Show newest version
/*******************************************************************************
 * Copyright (c) Contributors to the Eclipse Foundation
 *
 * 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.
 *
 * SPDX-License-Identifier: Apache-2.0 
 *******************************************************************************/

package org.osgi.annotation.bundle;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Mark an annotation element as an attribute.
 * 

* This is used when applying {@link Capability} or {@link Requirement} as a * meta annotation to an annotation declaration. The value of the annotation * element annotated with {@code Attribute} is used as the value of an attribute * in the generated capability or requirement clause. For example: * *

 * @Capability(namespace = "my.namespace")
 * public @interface MyCapability {
 *   @Attribute("attr")
 *   String value() default "";
 * }
 * 
 * @MyCapability("foo")
 * public MyClass {}
 * 
* * The use of the {@code MyCapability} annotation, which is meta annotated with * the {@code Capability} and {@code Attribute} annotations, will result in a * capability in the namespace {@code my.namespace} with the attribute * {@code attr=foo}. *

* If the element annotated with {@code Attribute} is unspecified when applied, * then the attribute must not be generated in the generated capability or * requirement clause. For example: * *

 * @MyCapability
 * public MyClass {}
 * 
* * will not have the {@code attr} attribute in the generated capability. *

* This annotation is not retained at runtime. It is for use by tools to * generate bundle manifests. * * @author $Id: 126200a2e0f44e2a27bb8c43232d4b4386cc02dd $ */ @Documented @Retention(RetentionPolicy.CLASS) @Target(ElementType.METHOD) public @interface Attribute { /** * The name of the attribute. *

* If not specified, the name of the annotated element is used as the name * of the attribute. */ String value() default ""; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy