com.sun.jersey.core.osgi
Class OsgiRegistry

java.lang.Object
  extended by com.sun.jersey.core.osgi.OsgiRegistry
All Implemented Interfaces:
java.util.EventListener, org.osgi.framework.BundleListener, org.osgi.framework.SynchronousBundleListener

public final class OsgiRegistry
extends java.lang.Object
implements org.osgi.framework.SynchronousBundleListener

Utility class to deal with OSGi runtime specific behavior. This is mainly to handle META-INF/services lookup and generic/application class lookup issue in OSGi. When OSGi runtime is detected by the ReflectionHelper class, an instance of OsgiRegistry is created and associated with given OSGi BundleContext. META-INF/services entries are then being accessed via the OSGi Bundle API as direct ClassLoader#getResource() method invocation does not work in this case within OSGi.

Author:
Jakub Podlesak (jakub.podlesak at oracle.com), Michal Gajdos (michal.gajdos at oracle.com)

Method Summary
 void bundleChanged(org.osgi.framework.BundleEvent event)
           
 java.lang.Class<?> classForNameWithException(java.lang.String className)
          Get the Class from the class name.
static OsgiRegistry getInstance()
          Returns an OsgiRegistry instance.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static OsgiRegistry getInstance()
Returns an OsgiRegistry instance. Call this method only if sure that the application is running in OSGi environment, otherwise a call to this method can lead to an ClassNotFoundException.

Returns:
an OsgiRegistry instance.

bundleChanged

public void bundleChanged(org.osgi.framework.BundleEvent event)
Specified by:
bundleChanged in interface org.osgi.framework.BundleListener

classForNameWithException

public java.lang.Class<?> classForNameWithException(java.lang.String className)
                                             throws java.lang.ClassNotFoundException
Get the Class from the class name.

The context class loader will be utilized if accessible and non-null. Otherwise the defining class loader of this class will be utilized.

Parameters:
className - the class name.
Returns:
the Class, otherwise null if the class cannot be found.
Throws:
java.lang.ClassNotFoundException - if the class cannot be found.


Copyright © 2014 Oracle Corporation. All Rights Reserved.