[jboss-cvs] JBossAS SVN: r66284 - in projects/aop/trunk: aop/src/main/org/jboss/aop/instrument and 8 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Oct 19 09:23:18 EDT 2007
Author: kabir.khan at jboss.com
Date: 2007-10-19 09:23:18 -0400 (Fri, 19 Oct 2007)
New Revision: 66284
Added:
projects/aop/trunk/asintegration/src/main/org/jboss/aop/classpool/
projects/aop/trunk/asintegration/src/main/org/jboss/aop/classpool/AbstractJBossClassPoolFactory.java
projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/DefaultTranslator.java
projects/aop/trunk/asintegration/src/main/org/jboss/aop/domain/NewClassLoaderDomainInitializer.java
projects/aop/trunk/asintegration/src/main/org/jboss/aop/domain/RepositoryClassLoaderDomainIntializer.java
Removed:
projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/NewClassLoaderDomainInitializer.java
projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/RepositoryClassLoaderDomainIntializer.java
Modified:
projects/aop/trunk/aop/src/main/org/jboss/aop/SuperClassesFirstWeavingStrategy.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java
projects/aop/trunk/asintegration/build.xml
projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/AspectDeployer.java
projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/JBossAspectLibrary.java
projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/JBoss5ClassPool.java
projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/JBoss5ClassPoolFactory.java
projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/JBoss5Integration.java
projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/NewClassLoaderDomainRegistry.java
projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/NewClassLoaderScopingPolicy.java
projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/RepositoryClassLoaderScopingPolicy.java
projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/ScopedJBoss5ClassPool.java
projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployment/JBossClassPoolFactory.java
projects/aop/trunk/asintegration/src/main/org/jboss/aop/domain/ScopedRepositoryClassLoaderDomain.java
Log:
[JBAOP-409] Tidy up code a bit
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/SuperClassesFirstWeavingStrategy.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/SuperClassesFirstWeavingStrategy.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/SuperClassesFirstWeavingStrategy.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -66,6 +66,9 @@
AOPClassPool pool = (AOPClassPool) manager.registerClassLoader(loader);
CtClassTransformationInfo info = obtainCtClassInfo(pool, className, classfileBuffer);
+
+// if (className.startsWith("org.jboss.test.aop.scopedextender.")) System.out.println("********** Weaving " + className + " " + loader);
+
CtClass clazz = instrumentClass(manager, pool, info, true);
if (clazz != null)
{
@@ -129,6 +132,9 @@
CtClass superClass = info.getClazz().getSuperclass();
if (superClass != null && !Instrumentor.implementsAdvised(info.getClazz()))
{
+// String DEBUGNAME = info.getClazz().getName();
+// if (DEBUGNAME.startsWith("org.jboss.test.aop.scopedextender.")) System.out.println("---- Instrument " + DEBUGNAME + " " + pool);
+//
CtClassTransformationInfo superInfo = new CtClassTransformationInfo(superClass, superClass.getName());
ClassPool superPool = superClass.getClassPool();
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -363,7 +363,7 @@
{
String initBody =
"{" +
- " String domainName = org.jboss.aop.Domain.getDomainName(" + DECLARING_CLASS + ", $2);" +
+ " java.lang.String domainName = org.jboss.aop.Domain.getDomainName(" + DECLARING_CLASS + ", $2);" +
" " + DOMAIN + "= new org.jboss.aop.GeneratedAdvisorDomain($1, domainName, " + DECLARING_CLASS + ", $2); " +
" ((org.jboss.aop.Domain)" + DOMAIN + ").setInheritsBindings(true); " +
" super.initialise(" + DECLARING_CLASS + ", " + DOMAIN + ");" +
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -212,6 +212,15 @@
}
catch (Exception e)
{
+ e.printStackTrace();
+ StringBuffer sb = new StringBuffer();
+ debugClass(sb, newInfo.getAdvisor().getClass());
+ System.out.println("==================== Error");
+ System.out.println("Field: " + joinpointField);
+ System.out.println("Field: " + joinpointField.getDeclaringClass() + " " + joinpointField.getDeclaringClass().getClassLoader());
+ System.out.println("Value: " + newInfo.getAdvisor().getClass() + " " + newInfo.getAdvisor().getClass().getClassLoader());
+ System.out.println(sb.toString());
+
throw new RuntimeException(e);
}
}
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -748,7 +748,7 @@
private String getClassName()
{
String packageName = clazz.getPackage().getName();
- if (packageName.indexOf("java.") != -1 && packageName.indexOf("sun.") != -1)
+ if (!packageName.startsWith("java.") && !packageName.startsWith("sun."))
{
packageName += ".";
}
Modified: projects/aop/trunk/asintegration/build.xml
===================================================================
--- projects/aop/trunk/asintegration/build.xml 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/asintegration/build.xml 2007-10-19 13:23:18 UTC (rev 66284)
@@ -216,6 +216,7 @@
update="${jar.update}" index="${jar.index}">
<fileset dir="${build.classes}">
<!-- Include everything else -->
+ <include name="org/jboss/aop/classpool/**"/>
<include name="org/jboss/aop/deploy*/**"/>
<include name="org/jboss/aop/domain/**"/>
</fileset>
@@ -227,6 +228,7 @@
update="${jar.update}" index="${jar.index}">
<fileset dir="${build.classes}">
<!-- Include everything else -->
+ <include name="org/jboss/aop/classpool/**"/>
<include name="org/jboss/aop/deploy*/**"/>
<include name="org/jboss/aop/domain/**"/>
<exclude name="org/jboss/aop/deployers/*.class"/>
@@ -244,6 +246,7 @@
update="${jar.update}" index="${jar.index}">
<fileset dir="${build.classes.retro}">
<!-- Include everything else -->
+ <include name="org/jboss/aop/classpool/**"/>
<include name="org/jboss/aop/deploy*/**"/>
<include name="org/jboss/aop/domain/**"/>
<exclude name="org/jboss/aop/deployers/*.class"/>
Added: projects/aop/trunk/asintegration/src/main/org/jboss/aop/classpool/AbstractJBossClassPoolFactory.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/classpool/AbstractJBossClassPoolFactory.java (rev 0)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/classpool/AbstractJBossClassPoolFactory.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -0,0 +1,56 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.aop.classpool;
+
+import javassist.ClassPool;
+import javassist.scopedpool.ScopedClassPool;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+import org.jboss.aop.deployment.SecurityActions;
+import org.jboss.aop.deployment.TempJBossClassPool;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class AbstractJBossClassPoolFactory
+{
+ protected ClassPool getCreateParentClassPools(final ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+ {
+ //Make sure that we get classpools for all the parent classloaders
+ ClassLoader parent = SecurityActions.getParent(cl);
+
+ if (parent != null)
+ {
+ return repository.registerClassLoader(parent);
+ }
+ return src;
+ }
+
+ public ScopedClassPool create(ClassPool src, ScopedClassPoolRepository repository)
+ {
+ return new TempJBossClassPool(src, repository);
+ }
+
+
+}
Modified: projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/AspectDeployer.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/AspectDeployer.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/AspectDeployer.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -35,8 +35,8 @@
import org.jboss.aop.AspectXmlLoader;
import org.jboss.aop.Domain;
import org.jboss.aop.classpool.AOPClassLoaderScopingPolicy;
-import org.jboss.aop.deployers.temp.NewClassLoaderDomainInitializer;
-import org.jboss.aop.deployers.temp.RepositoryClassLoaderDomainIntializer;
+import org.jboss.aop.domain.NewClassLoaderDomainInitializer;
+import org.jboss.aop.domain.RepositoryClassLoaderDomainIntializer;
import org.jboss.deployers.plugins.classloading.Module;
import org.jboss.deployers.spi.DeploymentException;
import org.jboss.deployers.spi.deployer.DeploymentStages;
@@ -200,9 +200,6 @@
{
undeployXml(manager, vf);
}
-
- //FIXME isn't this a bit too early?
- aspectManager.unregisterClassLoader(unit.getClassLoader());
}
private void undeployXml(AspectManager manager, VirtualFile vf)
Modified: projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/JBossAspectLibrary.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/JBossAspectLibrary.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/JBossAspectLibrary.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -51,10 +51,6 @@
*/
public void start() throws Exception
{
- System.out.println("***************************");
- System.out.println("TCL " + Thread.currentThread().getContextClassLoader() + " - " + Thread.currentThread().getContextClassLoader());
- System.out.println("MyCl " + this.getClass().getClassLoader() + " - " + this.getClass().getClassLoader());
-
aspectManager.deployBaseAspects();
}
Added: projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/DefaultTranslator.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/DefaultTranslator.java (rev 0)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/DefaultTranslator.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -0,0 +1,68 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.aop.deployers.temp;
+
+import java.security.ProtectionDomain;
+
+import org.jboss.aop.AspectManager;
+import org.jboss.util.loading.Translator;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultTranslator implements Translator
+{
+ AspectManager manager;
+ boolean translate;
+
+ public DefaultTranslator(AspectManager manager)
+ {
+ this.manager = manager;
+ }
+
+ public void setTranslate(boolean translate)
+ {
+ this.translate = translate;
+ }
+
+ public boolean getTranslate()
+ {
+ return translate;
+ }
+
+ public byte[] transform(ClassLoader loader, String className, Class classBeingRedefined,
+ ProtectionDomain protectionDomain, byte[] classfileBuffer) throws Exception
+ {
+ if (translate)
+ {
+ return manager.transform(loader, className, classBeingRedefined, protectionDomain, classfileBuffer);
+ }
+ return classfileBuffer;
+ }
+
+ public void unregisterClassLoader(ClassLoader loader)
+ {
+ manager.unregisterClassLoader(loader);
+ }
+}
Modified: projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/JBoss5ClassPool.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/JBoss5ClassPool.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/JBoss5ClassPool.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -21,10 +21,18 @@
*/
package org.jboss.aop.deployers.temp;
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
+import java.lang.reflect.Field;
import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import java.security.ProtectionDomain;
+import java.util.Set;
import javassist.CannotCompileException;
import javassist.ClassPool;
@@ -32,7 +40,10 @@
import javassist.scopedpool.ScopedClassPoolRepository;
import org.jboss.aop.classpool.AOPClassPool;
+import org.jboss.classloader.spi.base.BaseClassLoader;
import org.jboss.mx.loading.RepositoryClassLoader;
+import org.jboss.virtual.plugins.context.memory.MemoryContextFactory;
+import org.jboss.virtual.spi.VFSContext;
/**
*
@@ -41,18 +52,13 @@
*/
public class JBoss5ClassPool extends AOPClassPool
{
- /**
- * Used for dynamically created classes (see loadClass(String, byte[]), ClassLoader)
- */
- protected File tempdir = null;
protected URL tempURL = null;
// For loadClass tmpdir creation for UCL
protected final Object tmplock = new Object();
- protected JBoss5ClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository, File tmp, URL tmpURL)
+ protected JBoss5ClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository, URL tmpURL)
{
super(cl, src, repository);
- tempdir = tmp;
tempURL = tmpURL;
}
@@ -71,11 +77,113 @@
return false;
}
- public Class toClass(CtClass cc, ClassLoader loader, ProtectionDomain domain)
+
+ public Class toClass(CtClass cc, ClassLoader loader, ProtectionDomain domain) throws CannotCompileException
+ {
+ lockInCache(cc);
+ final ClassLoader myloader = getClassLoader();
+ if (myloader == null || tempURL == null)
+ {
+ return super.toClass(cc, loader, domain);
+ }
+
+ try
+ {
+ String classFileName = getResourceName(cc.getName());
+ URL outputURL = new URL(tempURL.toString() + "/" + classFileName);
+ //Write the classfile to the temporary url
+ synchronized (tmplock)
+ {
+ ByteArrayOutputStream byteout = new ByteArrayOutputStream();
+ BufferedOutputStream out = new BufferedOutputStream(byteout);
+ out.write(cc.toBytecode());
+ out.flush();
+ out.close();
+
+ byte[] classBytes = byteout.toByteArray();
+ MemoryContextFactory factory = MemoryContextFactory.getInstance();
+ factory.putFile(outputURL, classBytes);
+
+ clearCacheOnLoaderHack(myloader);
+
+ Class clazz = myloader.loadClass(cc.getName());
+//System.out.println("====> created " + clazz.getName() + " on " + myloader + " loaded with " + clazz.getClassLoader());
+ return clazz;
+ }
+ }
+ catch(Exception e)
+ {
+ ClassFormatError cfe = new ClassFormatError("Failed to load dyn class: " + cc.getName());
+ cfe.initCause(e);
+ throw cfe;
+ }
+ }
+
+
+ private void clearCacheOnLoaderHack(final ClassLoader loader)
+ {
+ if (loader instanceof BaseClassLoader)
+ {
+ try
+ {
+ AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() {
+
+ public Object run() throws Exception
+ {
+ Class clazz = loader.getClass();
+ while (clazz != null && clazz != BaseClassLoader.class)
+ {
+ clazz = clazz.getSuperclass();
+ }
+ Field field = clazz.getDeclaredField("blackList");
+ field.setAccessible(true);
+ Set<String> set = (Set<String>)field.get(loader);
+ set.clear();
+ return null;
+ }});
+ }
+ catch (PrivilegedActionException e)
+ {
+ // AutoGenerated
+ throw new RuntimeException(e.getCause());
+ }
+ }
+ }
+
+ public Class toClassOld(CtClass cc, ClassLoader loader, ProtectionDomain domain)
throws CannotCompileException
{
- ClassLoader useLoader = getClassLoader() == null ? loader : getClassLoader();
- return super.toClass(cc, useLoader, domain);
+ ClassLoader useLoader = getClassLoader() == null ? loader : getClassLoader();
+ localResources.put(getResourceName(cc.getName()), Boolean.TRUE);
+ System.out.println("===> Creating class " + cc.getName() + " on loader " + useLoader);
+
+ if ("org.jboss.test.aop.scopedextender.Child_A2$Child_A2Advisor".equals(cc.getName()))
+ {
+ try
+ {
+ useLoader.loadClass("org.jboss.test.aop.scopedextender.Base_A1$Base_A1Advisor");
+ System.out.println("Got BaseAdvisor");
+ }
+ catch (ClassNotFoundException e)
+ {
+ System.out.println("Could not get BaseAdvisor");
+ }
+ }
+
+ Class clazz = super.toClass(cc, useLoader, domain);
+ try
+ {
+ if ("org.jboss.test.aop.scopedextender.Base_A1$Base_A1Advisor".equals(cc.getName()))
+ {
+ Class clazz2 = useLoader.loadClass(cc.getName());
+ System.out.println("Found recently created class");
+ }
+ }
+ catch (ClassNotFoundException e)
+ {
+ System.out.println("Not found recently created class");
+ }
+ return clazz;
// lockInCache(cc);
// if (getClassLoader() == null || tempdir == null)
// {
@@ -119,20 +227,20 @@
// return dynClass;
}
- protected boolean isLocalResource(String resourceName)
- {
- if (super.isLocalResource(resourceName))
- {
- return true;
- }
-
- File file = new File(tempdir, resourceName);
- if (file.exists())
- {
- return true;
- }
-
- return false;
- }
+// protected boolean isLocalResource(String resourceName)
+// {
+// if (super.isLocalResource(resourceName))
+// {
+// return true;
+// }
+//
+// File file = new File(tempdir, resourceName);
+// if (file.exists())
+// {
+// return true;
+// }
+//
+// return false;
+// }
}
Modified: projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/JBoss5ClassPoolFactory.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/JBoss5ClassPoolFactory.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/JBoss5ClassPoolFactory.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -23,12 +23,14 @@
import java.io.File;
import java.io.IOException;
+import java.net.MalformedURLException;
import java.net.URL;
import java.util.Map;
import org.jboss.aop.AspectManager;
import org.jboss.aop.classpool.AOPClassLoaderScopingPolicy;
import org.jboss.aop.classpool.AOPClassPool;
+import org.jboss.aop.classpool.AbstractJBossClassPoolFactory;
import org.jboss.aop.deployment.JBossClassPool;
import org.jboss.aop.deployment.JBossClassPoolFactory;
import org.jboss.aop.deployment.ScopedJBossClassPool;
@@ -51,13 +53,8 @@
* @version $Revision: 64815 $
**/
@Deprecated
-public class JBoss5ClassPoolFactory extends JBossClassPoolFactory implements ScopedClassPoolFactory
+public class JBoss5ClassPoolFactory extends AbstractJBossClassPoolFactory implements ScopedClassPoolFactory
{
- public JBoss5ClassPoolFactory(File tmpClassesDir) throws IOException
- {
- super(tmpClassesDir);
- }
-
static ThreadLocal<Boolean> reentry = new ThreadLocal<Boolean>();
public ScopedClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
{
@@ -68,18 +65,6 @@
Map props = ExtraClassPoolFactoryParameters.peekThreadProperties();
Module module = (Module)props.get(Module.class);
- File tempdir = getTempDirectory(cl);
-
- //Do we need a way to add urls to the repository
- URL tmpCP;
- try
- {
- tmpCP = createURLAndAddToLoader(cl, tempdir);
- }
- catch (IOException e)
- {
- throw new RuntimeException(e);
- }
if (module != null && module.getParentDomain() != null)
{
//It is scoped
@@ -87,27 +72,23 @@
ClassLoaderDomain domain = sys.getDomain(module.getDomainName());
boolean parentFirst = module.getMetadata().isJ2seClassLoadingCompliance();
- return new ScopedJBoss5ClassPool(cl, parent, repository, tempdir, tmpCP, parentFirst, domain);
+ return new ScopedJBoss5ClassPool(cl, parent, repository, getTempURL(module), parentFirst, domain);
}
- return new JBoss5ClassPool(cl, parent, repository, tempdir, tmpCP);
+ return new JBoss5ClassPool(cl, parent, repository, getTempURL(module));
}
return new AOPClassPool(cl, parent, repository);
}
-
- private URL createURLAndAddToLoader(ClassLoader cl, File tempdir) throws IOException
+
+ private URL getTempURL(Module module)
{
- URL tmpURL = tempdir.toURL();
- URL tmpCP = new URL(tmpURL, "?dynamic=true");
-
- //FIXME IS this needed
-// RepositoryClassLoader ucl = (RepositoryClassLoader) cl;
-//
-// // We may be undeploying.
-// if (ucl.getLoaderRepository() != null)
-// {
-// ucl.addURL(tmpCP);
-// }
-
- return tmpCP;
+ try
+ {
+ URL tempUrl = module.getDynamicClassRoot();
+ return new URL(tempUrl, "/classes");
+ }
+ catch (MalformedURLException e)
+ {
+ throw new RuntimeException(e);
+ }
}
}
Modified: projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/JBoss5Integration.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/JBoss5Integration.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/JBoss5Integration.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -44,7 +44,31 @@
/** The delegate classpool factory */
private ScopedClassPoolFactory delegateClassPoolFactory;
private AOPClassLoaderScopingPolicy policy;
+ private AspectManager manager = AspectManager.getTopLevelAspectManager();
+ DefaultTranslator translator = new DefaultTranslator(manager);
+
+ NewClassLoaderDomainRegistry registry;
+ public NewClassLoaderDomainRegistry getRegistry()
+ {
+ return registry;
+ }
+
+ public void setRegistry(NewClassLoaderDomainRegistry registry)
+ {
+ this.registry = registry;
+ }
+
+ public void start()
+ {
+ ClassLoaderSystem.getInstance().setTranslator(translator);
+ }
+
+ public void stop()
+ {
+ ClassLoaderSystem.getInstance().setTranslator(null);
+ }
+
public boolean isValidClassLoader(ClassLoader loader)
{
if (!(loader instanceof RepositoryClassLoader)) return false;
@@ -68,7 +92,7 @@
public ScopedClassPoolFactory createScopedClassPoolFactory(File tmpDir) throws Exception
{
- delegateClassPoolFactory = new JBoss5ClassPoolFactory(tmpDir);
+ delegateClassPoolFactory = new JBoss5ClassPoolFactory();
return this;
}
@@ -84,12 +108,11 @@
public void attachDeprecatedTranslator()
{
- AspectManager mgr = AspectManager.instance();
- ClassLoaderSystem.getInstance().setTranslator(mgr);
+ translator.setTranslate(true);
}
public void detachDeprecatedTranslator()
{
- ClassLoaderSystem.getInstance().setTranslator(null);
+ translator.setTranslate(false);
}
}
Deleted: projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/NewClassLoaderDomainInitializer.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/NewClassLoaderDomainInitializer.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/NewClassLoaderDomainInitializer.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -1,36 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.aop.deployers.temp;
-
-import org.jboss.aop.Domain;
-import org.jboss.deployers.plugins.classloading.Module;
-
-/**
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public interface NewClassLoaderDomainInitializer
-{
- Domain initScopedDomain(ClassLoader loader, Module module);
-
-}
Modified: projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/NewClassLoaderDomainRegistry.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/NewClassLoaderDomainRegistry.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/NewClassLoaderDomainRegistry.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -35,7 +35,7 @@
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
* @version $Revision: 1.1 $
*/
-class NewClassLoaderDomainRegistry
+public class NewClassLoaderDomainRegistry
{
final static ClassLoaderDomain domain = new ClassLoaderDomain("NOT_USED_PLACEHOLDER");
Modified: projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/NewClassLoaderScopingPolicy.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/NewClassLoaderScopingPolicy.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/NewClassLoaderScopingPolicy.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -21,14 +21,13 @@
*/
package org.jboss.aop.deployers.temp;
-import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;
-import java.util.WeakHashMap;
import org.jboss.aop.AspectManager;
import org.jboss.aop.Domain;
import org.jboss.aop.classpool.AOPClassLoaderScopingPolicy;
+import org.jboss.aop.domain.NewClassLoaderDomainInitializer;
import org.jboss.classloader.spi.ClassLoaderDomain;
import org.jboss.classloader.spi.ClassLoaderSystem;
import org.jboss.deployers.plugins.classloading.Module;
@@ -43,8 +42,18 @@
public class NewClassLoaderScopingPolicy implements AOPClassLoaderScopingPolicy, NewClassLoaderDomainInitializer
{
static Logger log = Logger.getLogger(NewClassLoaderScopingPolicy.class);
- NewClassLoaderDomainRegistry registry = new NewClassLoaderDomainRegistry();
+ NewClassLoaderDomainRegistry registry;
+ public NewClassLoaderDomainRegistry getRegistry()
+ {
+ return registry;
+ }
+
+ public void setRegistry(NewClassLoaderDomainRegistry registry)
+ {
+ this.registry = registry;
+ }
+
public Domain initScopedDomain(ClassLoader loader, Module module)
{
ScopedNewClassLoaderDomain scopedDomain = (ScopedNewClassLoaderDomain)registry.getRegisteredDomain(loader);
Deleted: projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/RepositoryClassLoaderDomainIntializer.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/RepositoryClassLoaderDomainIntializer.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/RepositoryClassLoaderDomainIntializer.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -1,34 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.aop.deployers.temp;
-
-import org.jboss.aop.Domain;
-
-/**
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public interface RepositoryClassLoaderDomainIntializer
-{
- Domain initScopedDomain(ClassLoader loader);
-}
Modified: projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/RepositoryClassLoaderScopingPolicy.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/RepositoryClassLoaderScopingPolicy.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/RepositoryClassLoaderScopingPolicy.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -29,6 +29,7 @@
import org.jboss.aop.classpool.AOPClassLoaderScopingPolicy;
import org.jboss.aop.classpool.AOPClassPoolRepository;
import org.jboss.aop.deployment.ScopedRepositoryClassLoaderHelper;
+import org.jboss.aop.domain.RepositoryClassLoaderDomainIntializer;
import org.jboss.aop.domain.ScopedRepositoryClassLoaderDomain;
import org.jboss.logging.Logger;
import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
Modified: projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/ScopedJBoss5ClassPool.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/ScopedJBoss5ClassPool.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployers/temp/ScopedJBoss5ClassPool.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -36,8 +36,9 @@
import org.jboss.aop.classpool.AOPClassPool;
import org.jboss.aop.classpool.AOPClassPoolRepository;
import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.Loader;
import org.jboss.classloader.spi.base.BaseClassLoader;
-import org.jboss.mx.loading.RepositoryClassLoader;
+import org.jboss.logging.Logger;
/**
*
@@ -46,91 +47,49 @@
*/
public class ScopedJBoss5ClassPool extends JBoss5ClassPool
{
-// final static LoaderRepositoryUrlUtil LOADER_REPOSITORY_UTIL = new LoaderRepositoryUrlUtil();
-//
-// WeakReference repository = null;
-// UrlInfo urlInfo;
- ThreadLocal lastPool = new ThreadLocal();
+ Logger log = Logger.getLogger(ScopedJBoss5ClassPool.class);
+
+ ThreadLocal<ClassPool> lastPool = new ThreadLocal<ClassPool>();
WeakReference<ClassLoaderDomain> domainRef;
- public ScopedJBoss5ClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository, File tmp,
+ public ScopedJBoss5ClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository,
URL tmpURL, boolean parentFirst, ClassLoaderDomain domain)
{
- super(cl, src, repository, tmp, tmpURL);
+ super(cl, src, repository, tmpURL);
super.childFirstLookup = !parentFirst;
- this.domainRef = new WeakReference(domain);
+ this.domainRef = new WeakReference<ClassLoaderDomain>(domain);
}
-
-
-// public ScopedJBossClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository, File tmp, URL tmpURL)
-// {
-// super(cl, src, repository, tmp, tmpURL);
-//
-// boolean parentFirst = false;
-// LoaderRepository loaderRepository = null;
-// ClassLoader prnt = cl;
-// while (prnt != null)
-// {
-// if (prnt instanceof RepositoryClassLoader)
-// {
-// loaderRepository = ((RepositoryClassLoader)prnt).getLoaderRepository();
-// if (loaderRepository instanceof HeirarchicalLoaderRepository3)
-// {
-// parentFirst = ((HeirarchicalLoaderRepository3)loaderRepository).getUseParentFirst();
-// }
-// break;
-// }
-// prnt = SecurityActions.getParent(cl);
-// }
-//
-// super.childFirstLookup = !parentFirst;
-// }
-
-
-// private HeirarchicalLoaderRepository3 getRepository()
-// {
-// ClassLoader cl = getClassLoader0();
-// if (cl != null)
-// {
-// return (HeirarchicalLoaderRepository3)((RepositoryClassLoader)cl).getLoaderRepository();
-// }
-// return null;
-// }
-
private URL getResourceUrlForClass(String resourcename)
{
-// HeirarchicalLoaderRepository3 repo = getRepository();
-// return repo.getResource(resourcename, super.getClassLoader());
ClassLoaderDomain domain = domainRef.get();
return domain.getResource(resourcename);
}
-
- private boolean isMine(URL url)
+
+ private boolean isMine(URL myURL, String resourceName)
{
-// HeirarchicalLoaderRepository3 repo = getRepository();
-// if (repo != null)
-// {
-// //The URL of the class loaded with my scoped classloader
-// if (url != null)
-// {
-// urlInfo = LOADER_REPOSITORY_UTIL.getURLInfo(getRepository(), urlInfo);
-//
-// URL[] myUrls = urlInfo.getLocalUrls();
-// String resource = url.toString();
-// for (int i = 0 ; i < myUrls.length ; i++)
-// {
-// if (resource.indexOf(myUrls[i].toString()) >= 0)
-// {
-// return true;
-// }
-// }
-// return false;
-// }
-// }
- return true;
+ if (myURL == null)
+ {
+ return false;
+ }
+
+ ClassLoaderDomain domain = domainRef.get();
+ Loader parent = domain.getParent();
+ URL parentURL = parent.getResource(resourceName);
+
+ if (parentURL == null)
+ {
+ return true;
+ }
+
+ if (!myURL.equals(parentURL))
+ {
+ return true;
+ }
+
+ return false;
}
-
+
public CtClass getCached(String classname)
{
if (classname == null)
@@ -151,9 +110,8 @@
//Is this from the scoped classloader itself of from the parent?
String resourcename = getResourceName(classname);
URL url = getResourceUrlForClass(resourcename);
- boolean isMine = isMine(url);
- if (isMine)
+ if (isMine(url, resourcename))
{
if (super.childFirstLookup)
{
@@ -174,11 +132,15 @@
}
return super.getCached(classname);
}
+ else if (url == null)
+ {
+ return super.getCached(classname);
+ }
try
{
- ClassPool pool = getCorrectPoolForResource(classname, url);
+ ClassPool pool = getCorrectPoolForResource(classname, resourcename, url);
if (pool != lastPool.get())
{
lastPool.set(pool);
@@ -200,14 +162,49 @@
return null;
}
- private ClassPool getCorrectPoolForResource(String classname, URL url)
+ private ClassPool getCorrectPoolForResource(String classname, String resourceName, URL url)
{
+ boolean trace = log.isTraceEnabled();
synchronized(AspectManager.getRegisteredCLs())
{
//JBoss 5 has an extra NoAnnotationURLCLassLoader that is not on the default path, make sure that that is checked at the end
//FIXME This needs revisiting/removing once the
- ArrayList noAnnotationURLClassLoaderPools = null;
- String resource = url.toString();
+ ArrayList<ClassPool> noAnnotationURLClassLoaderPools = null;
+
+// //EXTRA DEBUG STUFF
+// if (classname.equals("org.jboss.test.aop.scopedextender.Base_A1"))
+// {
+// System.out.println("********** Looking for proper pool for Base_A1 - this pool " + this);
+// boolean found = false;
+// for(Iterator it = AspectManager.getRegisteredCLs().values().iterator() ; it.hasNext() ; )
+// {
+// AOPClassPool candidate = (AOPClassPool)it.next();
+// if (candidate.isUnloadedClassLoader())
+// {
+// System.out.println("Found something unloaded " + candidate);
+// continue;
+// }
+//
+// if (candidate.getClassLoader() instanceof BaseClassLoader)
+// {
+// BaseClassLoader bcl = (BaseClassLoader)candidate.getClassLoader();
+// URL foundUrl = bcl.getResourceLocally(resourceName);
+// if (foundUrl != null)
+// {
+// System.out.println("=============> Found in " + bcl);
+// if (url.equals(foundUrl))
+// {
+// if (!found)
+// {
+// System.out.println("^^^ The one returned ^^^");
+// found = true;
+// }
+// }
+// }
+// }
+// }
+// }
+
for(Iterator it = AspectManager.getRegisteredCLs().values().iterator() ; it.hasNext() ; )
{
AOPClassPool candidate = (AOPClassPool)it.next();
@@ -220,12 +217,15 @@
if (candidate.getClassLoader() instanceof BaseClassLoader)
{
//Sometimes the ClassLoader is a proxy for MBeanProxyExt?!
- RepositoryClassLoader rcl = (RepositoryClassLoader)candidate.getClassLoader();
- URL[] urls = rcl.getClasspath();
-
- for (int i = 0 ; i < urls.length ; i++)
+ BaseClassLoader bcl = (BaseClassLoader)candidate.getClassLoader();
+ URL foundUrl = bcl.getResourceLocally(resourceName);
+ if (trace)
{
- if (resource.indexOf(urls[i].getFile()) >= 0)
+ log.trace("Candidate classloader " + bcl + " has local resource " + foundUrl);
+ }
+ if (foundUrl != null)
+ {
+ if (url.equals(foundUrl))
{
return candidate;
}
@@ -236,7 +236,7 @@
{
if (noAnnotationURLClassLoaderPools == null)
{
- noAnnotationURLClassLoaderPools = new ArrayList();
+ noAnnotationURLClassLoaderPools = new ArrayList<ClassPool>();
}
noAnnotationURLClassLoaderPools.add(candidate);
}
@@ -245,10 +245,8 @@
//FIXME Remove once we have the JBoss 5 version of pool
if (noAnnotationURLClassLoaderPools != null)
{
- for (Iterator it = noAnnotationURLClassLoaderPools.iterator() ; it.hasNext() ; )
+ for (ClassPool pool : noAnnotationURLClassLoaderPools)
{
- ClassPool pool = (ClassPool)it.next();
-
try
{
pool.get(classname);
Modified: projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployment/JBossClassPoolFactory.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployment/JBossClassPoolFactory.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployment/JBossClassPoolFactory.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -28,6 +28,7 @@
import org.jboss.aop.AspectManager;
import org.jboss.aop.classpool.AOPClassLoaderScopingPolicy;
import org.jboss.aop.classpool.AOPClassPool;
+import org.jboss.aop.classpool.AbstractJBossClassPoolFactory;
import org.jboss.mx.loading.RepositoryClassLoader;
import javassist.ClassPool;
import javassist.scopedpool.ScopedClassPool;
@@ -43,7 +44,7 @@
* @version $Revision$
**/
@Deprecated
-public class JBossClassPoolFactory implements ScopedClassPoolFactory
+public class JBossClassPoolFactory extends AbstractJBossClassPoolFactory implements ScopedClassPoolFactory
{
protected File tmpClassesDir;
@@ -78,18 +79,6 @@
return new AOPClassPool(cl, parent, repository);
}
- protected ClassPool getCreateParentClassPools(final ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
- {
- //Make sure that we get classpools for all the parent classloaders
- ClassLoader parent = SecurityActions.getParent(cl);
-
- if (parent != null)
- {
- return repository.registerClassLoader(parent);
- }
- return src;
- }
-
protected File getTempDirectory(ClassLoader cl)
{
File tempdir = null;
@@ -116,11 +105,6 @@
return tempdir;
}
- public ScopedClassPool create(ClassPool src, ScopedClassPoolRepository repository)
- {
- return new TempJBossClassPool(src, repository);
- }
-
public File createTempDir(ClassLoader cl) throws IOException
{
File tempdir = File.createTempFile("ucl", "", tmpClassesDir);
Added: projects/aop/trunk/asintegration/src/main/org/jboss/aop/domain/NewClassLoaderDomainInitializer.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/domain/NewClassLoaderDomainInitializer.java (rev 0)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/domain/NewClassLoaderDomainInitializer.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -0,0 +1,36 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.aop.domain;
+
+import org.jboss.aop.Domain;
+import org.jboss.deployers.plugins.classloading.Module;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public interface NewClassLoaderDomainInitializer
+{
+ Domain initScopedDomain(ClassLoader loader, Module module);
+
+}
Added: projects/aop/trunk/asintegration/src/main/org/jboss/aop/domain/RepositoryClassLoaderDomainIntializer.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/domain/RepositoryClassLoaderDomainIntializer.java (rev 0)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/domain/RepositoryClassLoaderDomainIntializer.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -0,0 +1,34 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.aop.domain;
+
+import org.jboss.aop.Domain;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public interface RepositoryClassLoaderDomainIntializer
+{
+ Domain initScopedDomain(ClassLoader loader);
+}
Modified: projects/aop/trunk/asintegration/src/main/org/jboss/aop/domain/ScopedRepositoryClassLoaderDomain.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/domain/ScopedRepositoryClassLoaderDomain.java 2007-10-19 12:39:44 UTC (rev 66283)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/domain/ScopedRepositoryClassLoaderDomain.java 2007-10-19 13:23:18 UTC (rev 66284)
@@ -37,7 +37,6 @@
* @author adrian at jboss.org
* @version $Revision: 1.1 $
*/
- at Deprecated
public class ScopedRepositoryClassLoaderDomain extends ScopedClassLoaderDomain
{
public ScopedRepositoryClassLoaderDomain(ClassLoader loader, String name, boolean parentDelegation, AspectManager manager, boolean parentFirst)
More information about the jboss-cvs-commits
mailing list