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

org.osgi.framework.hooks.weaving.WeavingHook 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) OSGi Alliance (2010, 2020). 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.framework.hooks.weaving;

import org.osgi.annotation.versioning.ConsumerType;

/**
 * OSGi Framework Weaving Hook Service.
 * 
 * 

* Bundles registering this service will be called during framework class * loading operations. Weaving hook services are called when a class is being * loaded by the framework and have an opportunity to transform the class file * bytes that represents the class being loaded. Weaving hooks may also ask the * framework to wire in additional dynamic imports to the bundle. * *

* When a class is being loaded, the framework will create a {@link WovenClass} * object for the class and pass it to each registered weaving hook service for * possible modification. The first weaving hook called will see the original * class file bytes. Subsequently called weaving hooks will see the class file * bytes as modified by previously called weaving hooks. * * @ThreadSafe * @author $Id: e5b54121d2cab7caefbae3b718421b28e5a9ede7 $ */ @ConsumerType public interface WeavingHook { /** * Weaving hook method. *

* This method can modify the specified woven class object to weave the * class being defined. *

* If this method throws any exception, the framework must log the exception * and fail the class load in progress. This weaving hook service must be * deny listed by the framework and must not be called again. The deny * listing of this weaving hook service must expire when this weaving hook * service is unregistered. However, this method can throw a * {@link WeavingException} to deliberately fail the class load in progress * without being deny listed by the framework. * * @param wovenClass The {@link WovenClass} object that represents the data * that will be used to define the class. * @throws WeavingException If this weaving hook wants to deliberately fail * the class load in progress without being deny listed by the * framework */ public void weave(WovenClass wovenClass); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy