public T addExtension()

in src/main/java/org/apache/sling/sitemap/impl/builder/UrlImpl.java [90:114]


    public <T extends Extension> T addExtension(Class<T> extensionInterface) {
        ensureNotWritten();
        ExtensionFactory extensionFactory = extensionProviderManager.getExtensionFactory(extensionInterface);

        if (extensionFactory == null) {
            return null;
        }

        AbstractExtension extension = extensionFactory.newExtension();

        if (!extensionInterface.isInstance(extension)) {
            LOG.warn("Extension registered by factory for type '{}' is of incompatible type: {}",
                    extensionInterface.getName(), extension.getClass().getName());
            return null;
        }

        if (extensions == null) {
            extensions = new LinkedList<>();
        }

        extensions.add(new ExtensionMeta(extension, extensionFactory.getNamespace(), extensionFactory.getPrefix(),
                extensionFactory.getLocalName(), extensionFactory.isEmptyTag()));

        return extensionInterface.cast(extension);
    }