blob: d9187aeb91d89f43ba7d6210611e35a7f99ede64 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* David Knibb initial implementation
* Matthew Webster Eclipse 3.2 changes
* Martin Lippert reworked
*******************************************************************************/
package org.eclipse.equinox.weaving.aspectj.loadtime;
import java.net.URL;
import java.util.List;
import org.aspectj.weaver.loadtime.DefaultWeavingContext;
import org.aspectj.weaver.loadtime.definition.Definition;
import org.aspectj.weaver.tools.WeavingAdaptor;
import org.eclipse.equinox.weaving.aspectj.AspectJWeavingActivator;
import org.eclipse.osgi.service.resolver.BundleDescription;
/**
* The weaving context for AspectJs load-time weaving API that deals with the
* OSGi specifics for load-time weaving
*/
public class OSGiWeavingContext extends DefaultWeavingContext {
private final List<Definition> aspectDefinitions;
private final BundleDescription bundleDescription;
public OSGiWeavingContext(final ClassLoader loader,
final BundleDescription bundleDescription,
final List<Definition> aspectDefinitions) {
super(loader);
this.bundleDescription = bundleDescription;
this.aspectDefinitions = aspectDefinitions;
if (AspectJWeavingActivator.DEBUG)
System.out.println("- WeavingContext.WeavingContext() locader="
+ loader + ", bundle="
+ bundleDescription.getSymbolicName());
}
/**
* @see org.aspectj.weaver.loadtime.DefaultWeavingContext#getClassLoaderName()
*/
@Override
public String getClassLoaderName() {
return bundleDescription.getSymbolicName();
}
/**
* @see org.aspectj.weaver.loadtime.DefaultWeavingContext#getDefinitions(java.lang.ClassLoader,
* org.aspectj.weaver.tools.WeavingAdaptor)
*/
@Override
public List getDefinitions(final ClassLoader loader,
final WeavingAdaptor adaptor) {
return aspectDefinitions;
}
/**
* @see org.aspectj.weaver.loadtime.DefaultWeavingContext#getFile(java.net.URL)
*/
@Override
public String getFile(final URL url) {
return getBundleIdFromURL(url) + url.getFile();
}
/**
* @see org.aspectj.weaver.loadtime.DefaultWeavingContext#getId()
*/
@Override
public String getId() {
return bundleDescription.getSymbolicName();
}
@Override
public String toString() {
return getClass().getName() + "[" + bundleDescription.getSymbolicName()
+ "]";
}
}