blob: a3589dea86fe13d47f279ddcac48bce960e26704 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2009 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Matthew Webster initial implementation
* Martin Lippert supplementing mechanism reworked
*******************************************************************************/
package org.eclipse.equinox.weaving.hooks;
import org.eclipse.equinox.service.weaving.ISupplementerRegistry;
import org.eclipse.equinox.weaving.adaptors.Debug;
import org.eclipse.osgi.internal.hookregistry.ActivatorHookFactory;
import org.eclipse.osgi.internal.hookregistry.BundleFileWrapperFactoryHook;
import org.eclipse.osgi.internal.hookregistry.ClassLoaderHook;
import org.eclipse.osgi.internal.hookregistry.HookConfigurator;
import org.eclipse.osgi.internal.hookregistry.HookRegistry;
import org.osgi.framework.BundleActivator;
/**
* Default implementation of all the necessary adaptor hooks. Used to keep the
* real hook implementation focused on only the necessary methods.
*
* @author Matthew Webster
* @author Martin Lippert
*/
public abstract class AbstractWeavingHook extends ClassLoaderHook implements
HookConfigurator, BundleFileWrapperFactoryHook, IAdaptorProvider,
ActivatorHookFactory, BundleActivator {
/**
* flag to indicate whether to print out detailed information or not
*/
public static boolean verbose = Boolean
.getBoolean("org.aspectj.osgi.verbose"); //$NON-NLS-1$
private ISupplementerRegistry supplementerRegistry;
/**
* @see org.eclipse.osgi.baseadaptor.HookConfigurator#addHooks(org.eclipse.osgi.baseadaptor.HookRegistry)
*/
public void addHooks(final HookRegistry hooks) {
if (verbose)
System.err
.println("[org.eclipse.equinox.weaving.hook] info adding AspectJ hooks ..."); //$NON-NLS-1$
Debug.init(hooks.getConfiguration().getDebugOptions());
supplementerRegistry = new SupplementerRegistry(this);
hooks.addClassLoaderHook(this);
hooks.addBundleFileWrapperFactoryHook(this);
hooks.addActivatorHookFactory(this);
hooks.addClassLoaderHook(new WeavingLoaderDelegateHook(
supplementerRegistry));
}
/**
* @see org.eclipse.osgi.internal.hookregistry.ActivatorHookFactory#createActivator()
*/
public BundleActivator createActivator() {
return this;
}
/**
* Their is only one registry for dealing with supplementers available via
* this accessor method.
*
* @return The supplementer registry, guaranteed to be not null
*/
public ISupplementerRegistry getSupplementerRegistry() {
return this.supplementerRegistry;
}
}