pluginManager.addPluginManagerListener( new IPluginManagerListener() {
if ( pluginMgr != null && pluginMgr.isBeanRegistered( className ) ) { try { pojo = pluginMgr.getBean( className ); // "className" is actually the plugin bean id in this case } catch ( PluginBeanException e ) { error( "Could not load bean class from plugin", e ); //$NON-NLS-1$
private Class<?> findClass( String beanClassName ) throws ClassNotFoundException { // try main classloader // getClass().getClassLoader() Class<?> clazz = loadClassFromClassloader( getClass().getClassLoader(), beanClassName ); if ( clazz != null ) { return clazz; } if (getPluginManager() != null) { for ( String s : getPluginManager().getRegisteredPlugins() ) { clazz = loadClassFromClassloader( getPluginManager().getClassLoader( s ), beanClassName ); if ( clazz != null ) { return clazz; } } } throw new ClassNotFoundException( beanClassName ); }
if ( !StringUtils.isEmpty( beanId ) ) { IPluginManager pluginManager = PentahoSystem.get( IPluginManager.class ); clazz = pluginManager.loadClass( beanId ); if ( clazz != null ) { return clazz;
@Test public void resolveClassTestHappyPath() throws Exception { // TODO: rewrite this test to read bean from spring rather than mocking it String beanId = "ktr.backgroundAction"; Class<?> clazz = MyTestAction.class; IPluginManager pluginManager = mock( IPluginManager.class ); PowerMockito.mockStatic( PentahoSystem.class ); BDDMockito.given( PentahoSystem.get( IPluginManager.class ) ).willReturn( pluginManager ); Mockito.doReturn( clazz ).when( pluginManager ).loadClass( anyString() ); Class<?> aClass = ActionUtil.resolveActionClass( MyTestAction.class.getName(), beanId ); assertEquals( MyTestAction.class, aClass ); }
Object componentTmp = null; if ( ( pluginManager != null ) && ( pluginManager.isBeanRegistered( componentAlias ) ) ) { if ( RuntimeContext.debug ) { this.debug( "Component alias " + componentAlias + " will be resolved by the plugin manager." ); //$NON-NLS-1$ //$NON-NLS-2$ componentTmp = pluginManager.getBean( componentAlias ); if ( RuntimeContext.debug ) { this.debug( "Component found in a plugin, class is: " + componentTmp.getClass().getName() ); //$NON-NLS-1$