public Object newInstance( ComponentDescriptor componentDescriptor, ClassRealm classRealm, PlexusContainer container) throws ComponentInstantiationException { Class implementationClass = null; try { String implementation = componentDescriptor.getImplementation(); implementationClass = classRealm.loadClass(implementation); int modifiers = implementationClass.getModifiers(); if (Modifier.isInterface(modifiers)) { throw new ComponentInstantiationException( "Cannot instanciate implementation '" + implementation + "' because the class is a interface."); } if (Modifier.isAbstract(modifiers)) { throw new ComponentInstantiationException( "Cannot instanciate implementation '" + implementation + "' because the class is abstract."); } Object instance = implementationClass.newInstance(); return instance; } catch (InstantiationException e) { throw makeException(classRealm, componentDescriptor, implementationClass, e); } catch (ClassNotFoundException e) { throw makeException(classRealm, componentDescriptor, implementationClass, e); } catch (IllegalAccessException e) { throw makeException(classRealm, componentDescriptor, implementationClass, e); } catch (LinkageError e) { throw makeException(classRealm, componentDescriptor, implementationClass, e); } }