try {
ClassDescriptor eclass = ClassCache.getFor( classContext.loadClass(match.getName()) );
if (!this.isExtensionLoaded(eclass.getDescribedClass())) {
boolean load = true;
IWebApplicationExtension replace = null;
for (IWebApplicationExtension ext : extensions) {
if (eclass.getDescribedClass().isAssignableFrom(ext.getClass())) { load = false; break; }
if (ext.getClass().isAssignableFrom(eclass.getDescribedClass())) {
replace = ext; break;
}
}
if (!load) continue;
if (replace != null) { extensions.remove(replace); }
IWebApplicationExtension extension = (IWebApplicationExtension) eclass.newInstance(this);
extensions.add(extension);
if (this.descriptor != null && this.descriptor.getDescriptorFor(extension) != null) {
if (this.descriptor.getDescriptorFor(extension).getSettings() != null)
eclass.deserializeProperties(extension, this.descriptor.getDescriptorFor(extension).getSettings());