Java Code Examples for org.osgi.framework.Bundle#loadClass()

The following examples show how to use org.osgi.framework.Bundle#loadClass() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ClassLoaderUtilsTest.java    From brooklyn-server with Apache License 2.0 6 votes vote down vote up
@Test
public void testLoadJustOneClassInOsgiWhiteList() throws Exception {
    String bundlePath = OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_PATH;
    String bundleUrl = OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_URL;
    String classname = OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_SIMPLE_ENTITY;
    
    TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), bundlePath);

    mgmt = LocalManagementContextForTests.builder(true).enableOsgiReusable().build();
    Bundle bundle = installBundle(mgmt, bundleUrl);
    Class<?> clazz = bundle.loadClass(classname);
    Entity entity = createSimpleEntity(bundleUrl, clazz);
    
    String whiteList = bundle.getSymbolicName()+":"+bundle.getVersion();
    System.setProperty(ClassLoaderUtils.WHITE_LIST_KEY, whiteList);
    
    ClassLoaderUtils cluEntity = new ClassLoaderUtils(getClass(), entity);

    BundledName resource = new BundledName(classname).toResource();
    BundledName bn = new BundledName(resource.bundle, resource.version, "/" + resource.name);
    Asserts.assertSize(cluEntity.getResources(bn.toString()), 1);
}
 
Example 2
Source File: SelfBaseHelpSystem.java    From tmxeditor8 with GNU General Public License v2.0 6 votes vote down vote up
public static void runLiveHelp(String pluginID, String className, String arg) {	
	Bundle bundle = Platform.getBundle(pluginID);
	if (bundle == null) {
		return;
	}

	try {
		Class c = bundle.loadClass(className);
		Object o = c.newInstance();
		//Runnable runnable = null;
		if (o != null && o instanceof ILiveHelpAction) {
			ILiveHelpAction helpExt = (ILiveHelpAction) o;
			if (arg != null)
				helpExt.setInitializationString(arg);
			Thread runnableLiveHelp = new Thread(helpExt);
			runnableLiveHelp.setDaemon(true);
			runnableLiveHelp.start();
		}
	} catch (ThreadDeath td) {
		throw td;
	} catch (Exception e) {
	}
}
 
Example 3
Source File: ServiceContextFactory.java    From google-cloud-eclipse with Apache License 2.0 6 votes vote down vote up
@Override
public void setInitializationData(IConfigurationElement config, String propertyName, Object data)
    throws CoreException {
    if (data == null || !(data instanceof String)) {
      throw new CoreException(StatusUtil.error(getClass(), "Data must be a class name"));
    }
    String className = (String) data;
    String bundleSymbolicName = config.getNamespaceIdentifier();
    Bundle bundle = Platform.getBundle(bundleSymbolicName);
    if (bundle == null) {
      throw new CoreException(StatusUtil.error(this, "Missing bundle " + bundleSymbolicName));
    }
    try {
      clazz = bundle.loadClass(className);
    } catch (ClassNotFoundException ex) {
      throw new CoreException(StatusUtil.error(this,
                                               "Could not load class " + className
                                               + " from bundle " + bundle.getSymbolicName(),
                                               ex));
    }
}
 
Example 4
Source File: ExtensionClassLoader.java    From eclipse-cs with GNU Lesser General Public License v2.1 6 votes vote down vote up
@Override
public Class<?> loadClass(String name) throws ClassNotFoundException {

  Class<?> cl = null;

  for (Bundle bundle : mBundles) {

    try {
      cl = bundle.loadClass(name);
      if (cl != null) {
        break;
      }
    } catch (ClassNotFoundException e) {
      // try next
    }
  }

  if (cl == null) {
    throw new ClassNotFoundException(name);
  }

  return cl;
}
 
Example 5
Source File: DefaultExecutableFactory.java    From neoscada with Eclipse Public License 1.0 5 votes vote down vote up
private Class<?> findBundle ( final String symbolicName, final String clazzName )
{
    logger.debug ( "Find bundle with class - symbolicName: {}, className: {}", symbolicName, clazzName );

    final BundleContext context = FrameworkUtil.getBundle ( DefaultExecutableFactory.class ).getBundleContext ();

    for ( final Bundle bundle : context.getBundles () )
    {
        if ( !symbolicName.equals ( bundle.getSymbolicName () ) )
        {
            continue;
        }

        logger.debug ( "Checking bundle: {}", bundle.getSymbolicName () );

        Class<?> clazz;
        try
        {
            clazz = bundle.loadClass ( clazzName );
        }
        catch ( final ClassNotFoundException e )
        {
            logger.debug ( "Class could not be loaded", e );
            // we continue, since we might have multiple versions
            continue;
        }

        logger.debug ( "Success" );
        return clazz;
    }

    return null;
}
 
Example 6
Source File: XmlSerializerOsgiTest.java    From brooklyn-server with Apache License 2.0 5 votes vote down vote up
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
    int separator = name.indexOf(":");
    if (separator>=0) {
        Bundle bundle = Osgis.bundleFinder(framework).symbolicName(name.substring(0, separator)).find().get();
        return bundle.loadClass(name.substring(separator+1));
    } else {
        return super.findClass(name);
    }
}
 
Example 7
Source File: FeatureFlaggedIndex.java    From nexus-public with Eclipse Public License 1.0 5 votes vote down vote up
private static boolean isFeatureFlagDisabled(final Bundle bundle, final String clazzName) {
  try {
    Class<?> clazz = bundle.loadClass(clazzName);
    FeatureFlag flag = clazz.getAnnotation(FeatureFlag.class);
    return !getBoolean(flag.name(), flag.enabledByDefault());
  }
  catch (Exception | LinkageError e) {
    log.debug("Cannot determine feature-flag for {}; assuming false", clazzName, e);
    return false;
  }
}
 
Example 8
Source File: JythonPlugin.java    From Pydev with Eclipse Public License 1.0 5 votes vote down vote up
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public Class loadClass(String className) throws ClassNotFoundException {
    try {
        return super.loadClass(className);
    } catch (ClassNotFoundException e) {
        String searchedClass = e.getMessage();
        for (int i = 0; i < PACKAGES_MUST_START_WITH.length; i++) {
            if (searchedClass.startsWith(PACKAGES_MUST_START_WITH[i])) {

                // Look for the class from the bundles.
                int len = bundles.length;
                for (int j = 0; j < len; ++j) {
                    try {
                        Bundle bundle = bundles[j];
                        if (bundle.getState() == Bundle.ACTIVE) {
                            return bundle.loadClass(className);
                        }
                    } catch (Throwable e2) {
                    }
                }

                break;
            }
        }
        // Didn't find the class anywhere, rethrow e.
        throw e;
    }
}
 
Example 9
Source File: WorkspaceExecuteCommandHandlerTest.java    From eclipse.jdt.ls with Eclipse Public License 2.0 5 votes vote down vote up
@Test
public void testRegistryEventListener() throws Exception {
	loadBundles(Arrays.asList(getBundle("testresources", "jdt.ls.extension-0.0.1.jar")));
	String bundleLocation = getBundleLocation(getBundle("testresources", "jdt.ls.extension-0.0.1.jar"), true);

	BundleContext context = JavaLanguageServerPlugin.getBundleContext();
	Bundle installedBundle = context.getBundle(bundleLocation);
	try {
		assertNotNull(installedBundle);

		assertTrue(installedBundle.getState() == Bundle.STARTING || installedBundle.getState() == Bundle.ACTIVE);
		installedBundle.loadClass("jdt.ls.extension.Activator");
		assertEquals(installedBundle.getState(), Bundle.ACTIVE);

		Set<String> extensionCommands = WorkspaceExecuteCommandHandler.getInstance().getAllCommands();
		assertTrue(extensionCommands.contains("jdt.ls.extension.command1"));
		assertTrue(extensionCommands.contains("jdt.ls.extension.command2"));

		loadBundles(Arrays.asList(getBundle("testresources", "jdt.ls.extension-0.0.2.jar")));
		bundleLocation = getBundleLocation(getBundle("testresources", "jdt.ls.extension-0.0.2.jar"), true);

		installedBundle = context.getBundle(bundleLocation);
		assertNotNull(installedBundle);
		assertTrue(installedBundle.getState() == Bundle.STARTING || installedBundle.getState() == Bundle.ACTIVE);
		installedBundle.loadClass("jdt.ls.extension.Activator");
		assertEquals(installedBundle.getState(), Bundle.ACTIVE);

		extensionCommands = WorkspaceExecuteCommandHandler.getInstance().getAllCommands();
		assertTrue(extensionCommands.contains("jdt.ls.extension.command2"));
		assertTrue(extensionCommands.contains("jdt.ls.extension.command3"));
		assertFalse(extensionCommands.contains("jdt.ls.extension.command1"));
	} finally {
		// Uninstall the bundle to clean up the testing bundle context.
		installedBundle.uninstall();
	}
}
 
Example 10
Source File: EclipseClassProvider.java    From M2Doc with Eclipse Public License 1.0 5 votes vote down vote up
@Override
public Class<?> getClass(String className, String bundleName) throws ClassNotFoundException {
    final Class<?> res;

    final Bundle bundle = bundles.get(bundleName);
    if (bundle != null) {
        res = bundle.loadClass(className);
    } else {
        res = super.getClass(className, bundleName);
    }

    return res;
}
 
Example 11
Source File: PluginClassLoader.java    From depan with Apache License 2.0 5 votes vote down vote up
/**
 * Try to load classes from the known list of bundles, in order.
 * If all of those fail, delegate to the super class.
 */
@Override
public Class<?> loadClass(String name) throws ClassNotFoundException {
  for (Bundle bundle: pluginBundles) {
    // try to load the class one plugin after the other. stop on the first
    // plugin providing the corresponding class.
    try {
      return bundle.loadClass(name);
    } catch (ClassNotFoundException e) {
    }
  }
  return super.loadClass(name);
}
 
Example 12
Source File: XmlSerializerOsgiTest.java    From brooklyn-server with Apache License 2.0 5 votes vote down vote up
@Override
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
    int separator = name.indexOf(":");
    if (separator>=0) {
        Bundle bundle = Osgis.bundleFinder(framework).symbolicName(name.substring(0, separator)).find().get();
        return bundle.loadClass(name.substring(separator+1));
    } else {
        return super.loadClass(name, resolve);
    }
}
 
Example 13
Source File: XmlMementoSerializerTest.java    From brooklyn-server with Apache License 2.0 5 votes vote down vote up
@Test
public void testRenamedOsgiClassMovedBundle() throws Exception {
    String bundlePath = OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_COM_EXAMPLE_PATH;
    String bundleUrl = "classpath:" + bundlePath;
    String classname = OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_COM_EXAMPLE_OBJECT;
    TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), bundlePath);
    
    mgmt = LocalManagementContextForTests.builder(true).enableOsgiReusable().build();
    Bundle bundle = installBundle(mgmt, bundleUrl);
    
    String oldBundlePrefix = "com.old.symbolicname";
    
    String bundlePrefix = bundle.getSymbolicName();
    Class<?> osgiObjectClazz = bundle.loadClass(classname);
    Object obj = Reflections.invokeConstructorFromArgs(osgiObjectClazz, "myval").get();

    serializer = new XmlMementoSerializer<Object>(mgmt.getCatalogClassLoader(),
            ImmutableMap.of(oldBundlePrefix + ":" + classname, bundlePrefix + ":" + classname));
    
    serializer.setLookupContext(newEmptyLookupManagementContext(mgmt, true));

    // i.e. prepended with bundle name
    String serializedForm = Joiner.on("\n").join(
            "<"+bundlePrefix+":"+classname+">",
            "  <val>myval</val>",
            "</"+bundlePrefix+":"+classname+">");

    runRenamed(serializedForm, obj, ImmutableMap.<String, String>of(
            bundlePrefix + ":" + classname, oldBundlePrefix + ":" + classname));
}
 
Example 14
Source File: SelfDisplayUtils.java    From tmxeditor8 with GNU General Public License v2.0 5 votes vote down vote up
private static void invoke(String method) {
	try {
		Bundle bundle = Platform.getBundle(HELP_UI_PLUGIN_ID);
		if (bundle == null) {
			return;
		}
		Class c = bundle.loadClass(LOOP_CLASS_NAME);
		Method m = c.getMethod(method, new Class[]{});
		m.invoke(null, new Object[]{});
	} catch (Exception e) {
	}
}
 
Example 15
Source File: OsgiImpl.java    From vespa with Apache License 2.0 5 votes vote down vote up
@SuppressWarnings("unchecked")
private static Class<Object> resolveFromBundle(BundleInstantiationSpecification spec, Bundle bundle) {
    try {
        ensureBundleActive(bundle);
        return (Class<Object>) bundle.loadClass(spec.classId.getName());
    } catch (ClassNotFoundException e) {
        throw new IllegalArgumentException("Could not load class '" + spec.classId.getName() +
                                           "' from bundle " + bundle, e);
    }
}
 
Example 16
Source File: BirtWizardUtil.java    From birt with Eclipse Public License 1.0 4 votes vote down vote up
/**
 * get default resource folder setting
 * 
 * @return
 */
public static String getDefaultResourceFolder( )
{
	String resourceFolder = ""; //$NON-NLS-1$

	try
	{
		// check if load plugin
		Bundle bundle = Platform.getBundle( REPORT_PLUGIN_ID );
		if ( bundle == null )
			return resourceFolder;

		// get class
		Class reportPluginClass = bundle.loadClass( REPORT_PLUGIN_CLASS );
		if ( reportPluginClass != null )
		{
			// get instance
			Method method = reportPluginClass.getMethod(
					"getDefault", new Class[0] ); //$NON-NLS-1$
			Object instance = null;
			if ( method != null )
			{
				instance = method.invoke( null, new Object[0] );
				method = reportPluginClass.getMethod(
						"getResourcePreference", new Class[0] ); //$NON-NLS-1$
			}

			if ( method != null && instance != null )
			{
				// invode "getResourcePreference" method
				resourceFolder = (String) method.invoke( instance,
						new Object[0] );
			}
		}
	}
	catch ( Exception e )
	{
		e.printStackTrace( );
	}

	if ( resourceFolder == null )
		resourceFolder = ""; //$NON-NLS-1$

	return resourceFolder;
}
 
Example 17
Source File: BirtWizardUtil.java    From birt with Eclipse Public License 1.0 4 votes vote down vote up
/**
 * get default resource folder setting
 * 
 * @return
 */
public static String getDefaultResourceFolder( )
{
	String resourceFolder = ""; //$NON-NLS-1$

	try
	{
		// check if load plugin
		Bundle bundle = Platform.getBundle( REPORT_PLUGIN_ID );
		if ( bundle == null )
			return resourceFolder;

		// get class
		Class reportPluginClass = bundle.loadClass( REPORT_PLUGIN_CLASS );
		if ( reportPluginClass != null )
		{
			// get instance
			Method method = reportPluginClass.getMethod( "getDefault", new Class[0] ); //$NON-NLS-1$
			Object instance = null;
			if ( method != null )
			{
				instance = method.invoke( null, new Object[0] );
				method = reportPluginClass.getMethod( "getResourcePreference", new Class[0] ); //$NON-NLS-1$
			}

			if ( method != null && instance != null )
			{
				// invode "getResourcePreference" method
				resourceFolder = (String) method.invoke( instance,
						new Object[0] );
			}
		}
	}
	catch ( Exception e )
	{
		e.printStackTrace( );
	}

	if ( resourceFolder == null )
		resourceFolder = ""; //$NON-NLS-1$

	return resourceFolder;
}
 
Example 18
Source File: OSGIServiceLoader.java    From incubator-tamaya with Apache License 2.0 4 votes vote down vote up
private void processEntryPath(Bundle bundle, String entryPath) {
    try {
        String serviceName = entryPath.substring(META_INF_SERVICES.length());
        if (!serviceName.startsWith("org.apache.tamaya")) {
            // Ignore non Tamaya entries...
            return;
        }
        Class<?> serviceClass = bundle.loadClass(serviceName);
        URL child = bundle.getEntry(entryPath);
        InputStream inStream = child.openStream();
        LOG.info("Loading Services " + serviceClass.getName() + " from bundle...: " + bundle.getSymbolicName());
        try (BufferedReader br = new BufferedReader(new InputStreamReader(inStream, StandardCharsets.UTF_8))) {
            String line = br.readLine();
            while (line != null) {
                String implClassName = getImplClassName(line);
                if (implClassName.length() > 0) {
                    try {
                        // Load the service class
                        LOG.fine("Loading Class " + implClassName + " from bundle...: " + bundle.getSymbolicName());
                        Class<?> implClass = bundle.loadClass(implClassName);
                        if (!serviceClass.isAssignableFrom(implClass)) {
                            LOG.warning("Configured service: " + implClassName + " is not assignable to "
                                    + serviceClass.getName());
                            continue;
                        }
                        LOG.info("Loaded Service Factory (" + serviceName + "): " + implClassName);
                        // Provide service properties
                        Hashtable<String, String> props = new Hashtable<>();
                        props.put(Constants.VERSION_ATTRIBUTE, bundle.getVersion().toString());
                        String vendor = bundle.getHeaders().get(Constants.BUNDLE_VENDOR);
                        props.put(Constants.SERVICE_VENDOR, (vendor != null ? vendor : "anonymous"));
                        // Translate annotated @Priority into a service ranking
                        props.put(Constants.SERVICE_RANKING,
                                String.valueOf(PriorityServiceComparator.getPriority(implClass)));

                        // Register the service factory on behalf of the intercepted bundle
                        JDKUtilServiceFactory factory = new JDKUtilServiceFactory(implClass);
                        BundleContext bundleContext = bundle.getBundleContext();
                        bundleContext.registerService(serviceName, factory, props);
                        LOG.info("Registered Tamaya service class: " + implClassName + "(" + serviceName + ")");
                    } catch (NoClassDefFoundError | Exception err) {
                        LOG.log(Level.SEVERE, "Failed to load service: " + implClassName, err);
                    }
                }
                line = br.readLine();
            }
        }
    } catch (RuntimeException rte) {
        throw rte;
    } catch (Exception e) {
        LOG.log(Level.SEVERE, "Failed to read services from: " + entryPath, e);
    }
}
 
Example 19
Source File: AbstractLoadBundleTest.java    From logging-log4j2 with Apache License 2.0 4 votes vote down vote up
private PrintStream setupStream(final Bundle api, final PrintStream newStream) throws ReflectiveOperationException {
    // use reflection to access the classes internals and in the context of the api bundle

    final Class<?> statusLoggerClass = api.loadClass("org.apache.logging.log4j.status.StatusLogger");

    final Field statusLoggerField = statusLoggerClass.getDeclaredField("STATUS_LOGGER");
    statusLoggerField.setAccessible(true);
    final Object statusLoggerFieldValue = statusLoggerField.get(null);

    final Field loggerField = statusLoggerClass.getDeclaredField("logger");
    loggerField.setAccessible(true);
    final Object loggerFieldValue = loggerField.get(statusLoggerFieldValue);

    final Class<?> simpleLoggerClass = api.loadClass("org.apache.logging.log4j.simple.SimpleLogger");

    final Field streamField = simpleLoggerClass.getDeclaredField("stream");
    streamField.setAccessible(true);

    final PrintStream oldStream = (PrintStream) streamField.get(loggerFieldValue);

    streamField.set(loggerFieldValue, newStream);

    return oldStream;
}
 
Example 20
Source File: AbstractLoadBundleTest.java    From logging-log4j2 with Apache License 2.0 3 votes vote down vote up
private void log(final Bundle dummy) throws ReflectiveOperationException {
    // use reflection to log in the context of the dummy bundle

    final Class<?> logManagerClass = dummy.loadClass("org.apache.logging.log4j.LogManager");
    final Method getLoggerMethod = logManagerClass.getMethod("getLogger", Class.class);

    final Class<?> loggerClass = dummy.loadClass("org.apache.logging.log4j.configuration.CustomConfiguration");

    final Object logger = getLoggerMethod.invoke(null, loggerClass);
    final Method errorMethod = logger.getClass().getMethod("error", Object.class);

    errorMethod.invoke(logger, "Test OK");
}