1 22 package org.jboss.aop.microcontainer.integration; 23 24 import org.jboss.metadata.spi.repository.MetaDataRepository; 25 import org.jboss.metadata.spi.repository.MutableMetaDataRepository; 26 import org.jboss.repository.plugins.basic.BasicMetaDataContextFactory; 27 import org.jboss.repository.spi.MetaDataContext; 28 import org.jboss.repository.spi.MetaDataContextFactory; 29 30 35 public class AOPMetaDataContextFactory extends BasicMetaDataContextFactory implements MetaDataContextFactory 36 { 37 MetaDataContextFactory delegate; 38 public MetaDataContext getMetaDataContext(ClassLoader beanLoader, MetaDataRepository repository, String beanName) 39 { 40 MetaDataContextFactory factoryDelegate = getMetaDataContextFactoryDelegate(beanLoader); 41 if (factoryDelegate == null) 42 { 43 return super.getMetaDataContext(beanLoader, repository, beanName); 44 } 45 else 46 { 47 return factoryDelegate.getMetaDataContext(beanLoader, repository, beanName); 48 } 49 } 50 51 private synchronized MetaDataContextFactory getMetaDataContextFactoryDelegate(ClassLoader beanLoader) 52 { 53 if (delegate != null) 54 { 55 return delegate; 56 } 57 58 Class clazz = AOPDeployedChecker.getClassIfExists( 59 beanLoader, 60 "org.jboss.aop.microcontainer.integration.AOPMetaDataContextFactoryDelegate"); 61 62 if (clazz == null) 63 { 64 return null; 65 } 66 67 try 68 { 69 delegate = (MetaDataContextFactory)clazz.newInstance(); 70 } 71 catch (Exception e) 72 { 73 throw new RuntimeException ("Error instantiating AOPMetaDataContextFactoryDelegate", e); 74 } 75 76 return delegate; 77 } 78 79 80 } 81 | Popular Tags |