Package com.atlassian.labs.speakeasy.git

Source Code of com.atlassian.labs.speakeasy.git.SpeakeasyRepositoryResolver

package com.atlassian.labs.speakeasy.git;

import com.atlassian.plugin.Plugin;
import com.atlassian.plugin.PluginAccessor;
import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.transport.resolver.FileResolver;
import org.eclipse.jgit.transport.resolver.RepositoryResolver;
import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException;
import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException;
import org.osgi.framework.BundleContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
import java.io.File;

import static com.atlassian.labs.speakeasy.util.ExtensionValidate.isPureSpeakeasyExtension;

/**
*
*/
@Component
public class SpeakeasyRepositoryResolver implements RepositoryResolver<HttpServletRequest>
{
    private final GitRepositoryManager gitRepositoryManager;
    private final FileResolver<HttpServletRequest> resolver;
    private final BundleContext bundleContext;
    private final PluginAccessor pluginAccessor;

    @Autowired
    public SpeakeasyRepositoryResolver(GitRepositoryManager gitRepositoryManager, BundleContext bundleContext, PluginAccessor pluginAccessor)
    {
        this.gitRepositoryManager = gitRepositoryManager;
        this.bundleContext = bundleContext;
        this.pluginAccessor = pluginAccessor;
        this.resolver = new FileResolver<HttpServletRequest>(this.gitRepositoryManager.getRepositoriesDir(), true);
    }


    public Repository open(HttpServletRequest req, String name) throws RepositoryNotFoundException, ServiceNotAuthorizedException, ServiceNotEnabledException
    {
        String pluginKey = extractKeyFromUrl(name);
        Plugin plugin = pluginAccessor.getPlugin(pluginKey);
        if ((plugin != null && isPureSpeakeasyExtension(bundleContext, plugin)) || new File(gitRepositoryManager.getRepositoriesDir(), pluginKey).exists())
        {
            gitRepositoryManager.ensureRepository(pluginKey);
            return resolver.open(req, pluginKey);
        }
        else
        {
            throw new RepositoryNotFoundException(name);
        }
    }

    public String extractKeyFromUrl(String name)
    {
        return name.endsWith(".git") ? name.substring(0, name.length() - 4) : name;
    }
}
TOP

Related Classes of com.atlassian.labs.speakeasy.git.SpeakeasyRepositoryResolver

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.