use of org.xwiki.extension.InstalledExtension in project xwiki-platform by xwiki.
the class Package method registerExtension.
private void registerExtension(XWikiContext context) {
// Register the package as extension if it's one
if (isInstallExtension() && StringUtils.isNotEmpty(getExtensionId()) && StringUtils.isNotEmpty(getVersion())) {
ExtensionId extensionId = new ExtensionId(getExtensionId(), getVersion());
try {
LocalExtensionRepository localRepository = Utils.getComponent(LocalExtensionRepository.class);
LocalExtension localExtension = localRepository.getLocalExtension(extensionId);
if (localExtension == null) {
Extension extension;
try {
// Try to find and download the extension from a repository
extension = Utils.getComponent(ExtensionRepositoryManager.class).resolve(extensionId);
} catch (ResolveException e) {
LOGGER.debug("Can't find extension [{}]", extensionId, e);
// FIXME: Create a dummy extension. Need support for partial/lazy extension.
return;
}
localExtension = localRepository.storeExtension(extension);
}
InstalledExtensionRepository installedRepository = Utils.getComponent(InstalledExtensionRepository.class);
String namespace = "wiki:" + context.getWikiId();
// Make sure it's not already there
if (installedRepository.getInstalledExtension(localExtension.getId().getId(), namespace) == null) {
for (ExtensionId feature : localExtension.getExtensionFeatures()) {
if (installedRepository.getInstalledExtension(feature.getId(), namespace) != null) {
// Already exist so don't register it or it could create a mess
return;
}
}
} else {
return;
}
// Register the extension as installed
InstalledExtension installedExtension = installedRepository.installExtension(localExtension, namespace, false);
// Tell the world about it
Utils.getComponent(ObservationManager.class).notify(new ExtensionInstalledEvent(installedExtension.getId(), namespace), installedExtension);
} catch (Exception e) {
LOGGER.error("Failed to register extenion [{}] from the XAR", extensionId, e);
}
}
}
use of org.xwiki.extension.InstalledExtension in project xwiki-platform by xwiki.
the class JARTranslationBundleFactoryListener method onEvent.
@Override
public void onEvent(Event event, Object source, Object data) {
ExtensionEvent extensionEvent = (ExtensionEvent) event;
InstalledExtension extension = (InstalledExtension) source;
if (extension.getType().equals(EXTENSION_TYPE)) {
if (event instanceof ExtensionInstalledEvent) {
extensionAdded(extension, extensionEvent.getNamespace());
} else if (event instanceof ExtensionUninstalledEvent) {
extensionDeleted(extension, extensionEvent.getNamespace());
} else {
extensionUpgraded(extension, (Collection<InstalledExtension>) data, extensionEvent.getNamespace());
}
}
}
Aggregations