Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Equinox » Multiple instances of the same class woven against different aspects in an Eclipse plugin [Cross-pos
Multiple instances of the same class woven against different aspects in an Eclipse plugin [Cross-pos [message #51914] Fri, 28 October 2005 13:36
Didier Villevalois is currently offline Didier VillevaloisFriend
Messages: 86
Registered: July 2009
Member
Hello,

[Sorry, i cross-posted this in eclipse.technology.aspectj,
eclipse.technology.ajdt, eclipse.technology.equinox because i did not
know exactely who could answer this.]

I try to write an RCP app in which i need multiple instances of the same
classes woven against different aspects.

I don't know how classloading works into the Eclipse OSGi runtime and i
did not find any articles about it on the web.

I tried to use the org.aspectj.weawer.loadtime.WeavingURLClassLoader
provided with AspectJ5 but i can't succeed making it to work inside a
plugin. It seems that my class is already loaded by a parent classloader
(the one of the plugin maybe).

I took care no other reference is made to the classes to weave. I just
refer to those classes via the reflective API via my weaving classloader
like this :

public class TestClassFactory
{
public static TestInterface newTestClass(URL[] aspectURLs,
ClassLoader parent) throws ClassNotFoundException
{
ClassLoader loader = createClassLoader(aspectURLs, parent);
Class testClass =
loader.loadClass("org.beuz.lib.aspect1.TestClass");

try
{
Constructor constructor = testClass.getConstructor(new
Class[] {});
return (TestInterface) constructor.newInstance();
}
catch (Exception e)
{
// Should note occur
e.printStackTrace();
}
return null;
}

private static ClassLoader createClassLoader(URL[] aspectURLs,
ClassLoader parent)
{
if (parent == null)
{
parent = TestClassFactory.class.getClassLoader();
}
return new MyWeavingClassLoader(aspectURLs, parent);
}

private static class MyWeavingClassLoader extends WeavingURLClassLoader
{
public MyWeavingClassLoader(URL[] aspectURLs, ClassLoader parent)
{
super(parent);
m_aspectURLs = aspectURLs;

}

private URL[] m_aspectURLs;

@Override
public URL[] getAspectURLs()
{
return m_aspectURLs;
}
}
}

Does someone knows how to do this ?

I can send my test with three minimal plugins if someone wants.

Thanks for your help,
Didier
Previous Topic:OSGi container on an application server
Next Topic:SWORD4J Analyzed and Secured plugins in RCP platform
Goto Forum:
  


Current Time: Sat Apr 27 02:29:36 GMT 2024

Powered by FUDForum. Page generated in 0.02687 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top