Example usage for org.eclipse.jgit.lib Repository close

List of usage examples for org.eclipse.jgit.lib Repository close

Introduction

In this page you can find the example usage for org.eclipse.jgit.lib Repository close.

Prototype

@Override
public void close() 

Source Link

Document

Decrement the use count, and maybe close resources.

Usage

From source file:com.gitblit.manager.RepositoryManager.java

License:Apache License

/**
 * Returns the repository model for the specified repository. This method
 * does not consider user access permissions.
 *
 * @param name/* w  ww  . j  a  va 2s  .co  m*/
 * @return repository model or null
 */
@Override
public RepositoryModel getRepositoryModel(String name) {
    String repositoryName = fixRepositoryName(name);

    String repositoryKey = getRepositoryKey(repositoryName);
    if (!repositoryListCache.containsKey(repositoryKey)) {
        RepositoryModel model = loadRepositoryModel(repositoryName);
        if (model == null) {
            return null;
        }
        addToCachedRepositoryList(model);
        return DeepCopier.copy(model);
    }

    // cached model
    RepositoryModel model = repositoryListCache.get(repositoryKey);

    if (isCollectingGarbage(model.name)) {
        // Gitblit is busy collecting garbage, use our cached model
        RepositoryModel rm = DeepCopier.copy(model);
        rm.isCollectingGarbage = true;
        return rm;
    }

    // check for updates
    Repository r = getRepository(model.name);
    if (r == null) {
        // repository is missing
        removeFromCachedRepositoryList(repositoryName);
        logger.error(
                MessageFormat.format("Repository \"{0}\" is missing! Removing from cache.", repositoryName));
        return null;
    }

    FileBasedConfig config = (FileBasedConfig) getRepositoryConfig(r);
    if (config.isOutdated()) {
        // reload model
        logger.debug(MessageFormat.format("Config for \"{0}\" has changed. Reloading model and updating cache.",
                repositoryName));
        model = loadRepositoryModel(model.name);
        removeFromCachedRepositoryList(model.name);
        addToCachedRepositoryList(model);
    } else {
        // update a few repository parameters
        if (!model.hasCommits) {
            // update hasCommits, assume a repository only gains commits :)
            model.hasCommits = JGitUtils.hasCommits(r);
        }

        updateLastChangeFields(r, model);
    }
    r.close();

    // return a copy of the cached model
    return DeepCopier.copy(model);
}

From source file:com.gitblit.manager.RepositoryManager.java

License:Apache License

/**
 * Create a repository model from the configuration and repository data.
 *
 * @param repositoryName//  w  ww. j  av a  2 s .co  m
 * @return a repositoryModel or null if the repository does not exist
 */
private RepositoryModel loadRepositoryModel(String repositoryName) {
    Repository r = getRepository(repositoryName);
    if (r == null) {
        return null;
    }
    RepositoryModel model = new RepositoryModel();
    model.isBare = r.isBare();
    File basePath = getRepositoriesFolder();
    if (model.isBare) {
        model.name = com.gitblit.utils.FileUtils.getRelativePath(basePath, r.getDirectory());
    } else {
        model.name = com.gitblit.utils.FileUtils.getRelativePath(basePath, r.getDirectory().getParentFile());
    }
    if (StringUtils.isEmpty(model.name)) {
        // Repository is NOT located relative to the base folder because it
        // is symlinked.  Use the provided repository name.
        model.name = repositoryName;
    }
    model.projectPath = StringUtils.getFirstPathElement(repositoryName);

    StoredConfig config = r.getConfig();
    boolean hasOrigin = false;

    if (config != null) {
        // Initialize description from description file
        hasOrigin = !StringUtils.isEmpty(config.getString("remote", "origin", "url"));
        if (getConfig(config, "description", null) == null) {
            File descFile = new File(r.getDirectory(), "description");
            if (descFile.exists()) {
                String desc = com.gitblit.utils.FileUtils.readContent(descFile,
                        System.getProperty("line.separator"));
                if (!desc.toLowerCase().startsWith("unnamed repository")) {
                    config.setString(Constants.CONFIG_GITBLIT, null, "description", desc);
                }
            }
        }
        model.description = getConfig(config, "description", "");
        model.originRepository = getConfig(config, "originRepository", null);
        model.addOwners(ArrayUtils.fromString(getConfig(config, "owner", "")));
        model.acceptNewPatchsets = getConfig(config, "acceptNewPatchsets", true);
        model.acceptNewTickets = getConfig(config, "acceptNewTickets", true);
        model.requireApproval = getConfig(config, "requireApproval",
                settings.getBoolean(Keys.tickets.requireApproval, false));
        model.mergeTo = getConfig(config, "mergeTo", null);
        model.mergeType = MergeType
                .fromName(getConfig(config, "mergeType", settings.getString(Keys.tickets.mergeType, null)));
        model.useIncrementalPushTags = getConfig(config, "useIncrementalPushTags", false);
        model.incrementalPushTagPrefix = getConfig(config, "incrementalPushTagPrefix", null);
        model.allowForks = getConfig(config, "allowForks", true);
        model.accessRestriction = AccessRestrictionType.fromName(getConfig(config, "accessRestriction",
                settings.getString(Keys.git.defaultAccessRestriction, "PUSH")));
        model.authorizationControl = AuthorizationControl.fromName(getConfig(config, "authorizationControl",
                settings.getString(Keys.git.defaultAuthorizationControl, null)));
        model.verifyCommitter = getConfig(config, "verifyCommitter", false);
        model.showRemoteBranches = getConfig(config, "showRemoteBranches", hasOrigin);
        model.isFrozen = getConfig(config, "isFrozen", false);
        model.skipSizeCalculation = getConfig(config, "skipSizeCalculation", false);
        model.skipSummaryMetrics = getConfig(config, "skipSummaryMetrics", false);
        model.commitMessageRenderer = CommitMessageRenderer.fromName(getConfig(config, "commitMessageRenderer",
                settings.getString(Keys.web.commitMessageRenderer, null)));
        model.federationStrategy = FederationStrategy.fromName(getConfig(config, "federationStrategy", null));
        model.federationSets = new ArrayList<String>(
                Arrays.asList(config.getStringList(Constants.CONFIG_GITBLIT, null, "federationSets")));
        model.isFederated = getConfig(config, "isFederated", false);
        model.gcThreshold = getConfig(config, "gcThreshold",
                settings.getString(Keys.git.defaultGarbageCollectionThreshold, "500KB"));
        model.gcPeriod = getConfig(config, "gcPeriod",
                settings.getInteger(Keys.git.defaultGarbageCollectionPeriod, 7));
        try {
            model.lastGC = new SimpleDateFormat(Constants.ISO8601)
                    .parse(getConfig(config, "lastGC", "1970-01-01'T'00:00:00Z"));
        } catch (Exception e) {
            model.lastGC = new Date(0);
        }
        model.maxActivityCommits = getConfig(config, "maxActivityCommits",
                settings.getInteger(Keys.web.maxActivityCommits, 0));
        model.origin = config.getString("remote", "origin", "url");
        if (model.origin != null) {
            model.origin = model.origin.replace('\\', '/');
            model.isMirror = config.getBoolean("remote", "origin", "mirror", false);
        }
        model.preReceiveScripts = new ArrayList<String>(
                Arrays.asList(config.getStringList(Constants.CONFIG_GITBLIT, null, "preReceiveScript")));
        model.postReceiveScripts = new ArrayList<String>(
                Arrays.asList(config.getStringList(Constants.CONFIG_GITBLIT, null, "postReceiveScript")));
        model.mailingLists = new ArrayList<String>(
                Arrays.asList(config.getStringList(Constants.CONFIG_GITBLIT, null, "mailingList")));
        model.indexedBranches = new ArrayList<String>(
                Arrays.asList(config.getStringList(Constants.CONFIG_GITBLIT, null, "indexBranch")));
        model.metricAuthorExclusions = new ArrayList<String>(
                Arrays.asList(config.getStringList(Constants.CONFIG_GITBLIT, null, "metricAuthorExclusions")));

        // Custom defined properties
        model.customFields = new LinkedHashMap<String, String>();
        for (String aProperty : config.getNames(Constants.CONFIG_GITBLIT, Constants.CONFIG_CUSTOM_FIELDS)) {
            model.customFields.put(aProperty,
                    config.getString(Constants.CONFIG_GITBLIT, Constants.CONFIG_CUSTOM_FIELDS, aProperty));
        }
    }
    model.HEAD = JGitUtils.getHEADRef(r);
    if (StringUtils.isEmpty(model.mergeTo)) {
        model.mergeTo = model.HEAD;
    }
    model.availableRefs = JGitUtils.getAvailableHeadTargets(r);
    model.sparkleshareId = JGitUtils.getSparkleshareId(r);
    model.hasCommits = JGitUtils.hasCommits(r);
    updateLastChangeFields(r, model);
    r.close();

    if (StringUtils.isEmpty(model.originRepository) && model.origin != null
            && model.origin.startsWith("file://")) {
        // repository was cloned locally... perhaps as a fork
        try {
            File folder = new File(new URI(model.origin));
            String originRepo = com.gitblit.utils.FileUtils.getRelativePath(getRepositoriesFolder(), folder);
            if (!StringUtils.isEmpty(originRepo)) {
                // ensure origin still exists
                File repoFolder = new File(getRepositoriesFolder(), originRepo);
                if (repoFolder.exists()) {
                    model.originRepository = originRepo.toLowerCase();

                    // persist the fork origin
                    updateConfiguration(r, model);
                }
            }
        } catch (URISyntaxException e) {
            logger.error("Failed to determine fork for " + model, e);
        }
    }
    return model;
}

From source file:com.gitblit.manager.RepositoryManager.java

License:Apache License

/**
 * Determines if this server has the requested repository.
 *
 * @param n//w w  w.  ja v  a  2s  . c  om
 * @param caseInsensitive
 * @return true if the repository exists
 */
@Override
public boolean hasRepository(String repositoryName, boolean caseSensitiveCheck) {
    if (!caseSensitiveCheck && settings.getBoolean(Keys.git.cacheRepositoryList, true)) {
        // if we are caching use the cache to determine availability
        // otherwise we end up adding a phantom repository to the cache
        String key = getRepositoryKey(repositoryName);
        return repositoryListCache.containsKey(key);
    }
    Repository r = getRepository(repositoryName, false);
    if (r == null) {
        return false;
    }
    r.close();
    return true;
}

From source file:com.gitblit.manager.RepositoryManager.java

License:Apache License

/**
 * Ensure that a cached repository is completely closed and its resources
 * are properly released./* www .  java 2  s  . c o  m*/
 *
 * @param repositoryName
 */
@Override
public void close(String repositoryName) {
    Repository repository = getRepository(repositoryName);
    if (repository == null) {
        return;
    }
    RepositoryCache.close(repository);

    // assume 2 uses in case reflection fails
    int uses = 2;
    try {
        // The FileResolver caches repositories which is very useful
        // for performance until you want to delete a repository.
        // I have to use reflection to call close() the correct
        // number of times to ensure that the object and ref databases
        // are properly closed before I can delete the repository from
        // the filesystem.
        Field useCnt = Repository.class.getDeclaredField("useCnt");
        useCnt.setAccessible(true);
        uses = ((AtomicInteger) useCnt.get(repository)).get();
    } catch (Exception e) {
        logger.warn(MessageFormat.format("Failed to reflectively determine use count for repository {0}",
                repositoryName), e);
    }
    if (uses > 0) {
        logger.debug(MessageFormat.format(
                "{0}.useCnt={1}, calling close() {2} time(s) to close object and ref databases", repositoryName,
                uses, uses));
        for (int i = 0; i < uses; i++) {
            repository.close();
        }
    }

    // close any open index writer/searcher in the Lucene executor
    luceneExecutor.close(repositoryName);
}

From source file:com.gitblit.manager.RepositoryManager.java

License:Apache License

/**
 * Creates/updates the repository model keyed by repositoryName. Saves all
 * repository settings in .git/config. This method allows for renaming
 * repositories and will update user access permissions accordingly.
 *
 * All repositories created by this method are bare and automatically have
 * .git appended to their names, which is the standard convention for bare
 * repositories.// w ww  .j  a v a2  s  .  com
 *
 * @param repositoryName
 * @param repository
 * @param isCreate
 * @throws GitBlitException
 */
@Override
public void updateRepositoryModel(String repositoryName, RepositoryModel repository, boolean isCreate)
        throws GitBlitException {
    if (isCollectingGarbage(repositoryName)) {
        throw new GitBlitException(
                MessageFormat.format("sorry, Gitblit is busy collecting garbage in {0}", repositoryName));
    }
    Repository r = null;
    String projectPath = StringUtils.getFirstPathElement(repository.name);
    if (!StringUtils.isEmpty(projectPath)) {
        if (projectPath.equalsIgnoreCase(settings.getString(Keys.web.repositoryRootGroupName, "main"))) {
            // strip leading group name
            repository.name = repository.name.substring(projectPath.length() + 1);
        }
    }
    boolean isRename = false;
    if (isCreate) {
        // ensure created repository name ends with .git
        if (!repository.name.toLowerCase().endsWith(org.eclipse.jgit.lib.Constants.DOT_GIT_EXT)) {
            repository.name += org.eclipse.jgit.lib.Constants.DOT_GIT_EXT;
        }
        if (hasRepository(repository.name)) {
            throw new GitBlitException(MessageFormat
                    .format("Can not create repository ''{0}'' because it already exists.", repository.name));
        }
        // create repository
        logger.info("create repository " + repository.name);
        String shared = settings.getString(Keys.git.createRepositoriesShared, "FALSE");
        r = JGitUtils.createRepository(repositoriesFolder, repository.name, shared);
    } else {
        // rename repository
        isRename = !repositoryName.equalsIgnoreCase(repository.name);
        if (isRename) {
            if (!repository.name.toLowerCase().endsWith(org.eclipse.jgit.lib.Constants.DOT_GIT_EXT)) {
                repository.name += org.eclipse.jgit.lib.Constants.DOT_GIT_EXT;
            }
            if (new File(repositoriesFolder, repository.name).exists()) {
                throw new GitBlitException(
                        MessageFormat.format("Failed to rename ''{0}'' because ''{1}'' already exists.",
                                repositoryName, repository.name));
            }
            close(repositoryName);
            File folder = new File(repositoriesFolder, repositoryName);
            File destFolder = new File(repositoriesFolder, repository.name);
            if (destFolder.exists()) {
                throw new GitBlitException(MessageFormat.format(
                        "Can not rename repository ''{0}'' to ''{1}'' because ''{1}'' already exists.",
                        repositoryName, repository.name));
            }
            File parentFile = destFolder.getParentFile();
            if (!parentFile.exists() && !parentFile.mkdirs()) {
                throw new GitBlitException(
                        MessageFormat.format("Failed to create folder ''{0}''", parentFile.getAbsolutePath()));
            }
            if (!folder.renameTo(destFolder)) {
                throw new GitBlitException(MessageFormat.format(
                        "Failed to rename repository ''{0}'' to ''{1}''.", repositoryName, repository.name));
            }
            // rename the roles
            if (!userManager.renameRepositoryRole(repositoryName, repository.name)) {
                throw new GitBlitException(
                        MessageFormat.format("Failed to rename repository permissions ''{0}'' to ''{1}''.",
                                repositoryName, repository.name));
            }

            // rename fork origins in their configs
            if (!ArrayUtils.isEmpty(repository.forks)) {
                for (String fork : repository.forks) {
                    Repository rf = getRepository(fork);
                    try {
                        StoredConfig config = rf.getConfig();
                        String origin = config.getString("remote", "origin", "url");
                        origin = origin.replace(repositoryName, repository.name);
                        config.setString("remote", "origin", "url", origin);
                        config.setString(Constants.CONFIG_GITBLIT, null, "originRepository", repository.name);
                        config.save();
                    } catch (Exception e) {
                        logger.error("Failed to update repository fork config for " + fork, e);
                    }
                    rf.close();
                }
            }

            // update this repository's origin's fork list
            if (!StringUtils.isEmpty(repository.originRepository)) {
                String originKey = getRepositoryKey(repository.originRepository);
                RepositoryModel origin = repositoryListCache.get(originKey);
                if (origin != null && !ArrayUtils.isEmpty(origin.forks)) {
                    origin.forks.remove(repositoryName);
                    origin.forks.add(repository.name);
                }
            }

            // clear the cache
            clearRepositoryMetadataCache(repositoryName);
            repository.resetDisplayName();
        }

        // load repository
        logger.info("edit repository " + repository.name);
        r = getRepository(repository.name);
    }

    // update settings
    if (r != null) {
        updateConfiguration(r, repository);
        // Update the description file
        File descFile = new File(r.getDirectory(), "description");
        if (repository.description != null) {
            com.gitblit.utils.FileUtils.writeContent(descFile, repository.description);
        } else if (descFile.exists() && !descFile.isDirectory()) {
            descFile.delete();
        }
        // only update symbolic head if it changes
        String currentRef = JGitUtils.getHEADRef(r);
        if (!StringUtils.isEmpty(repository.HEAD) && !repository.HEAD.equals(currentRef)) {
            logger.info(MessageFormat.format("Relinking {0} HEAD from {1} to {2}", repository.name, currentRef,
                    repository.HEAD));
            if (JGitUtils.setHEADtoRef(r, repository.HEAD)) {
                // clear the cache
                clearRepositoryMetadataCache(repository.name);
            }
        }

        // Adjust permissions in case we updated the config files
        JGitUtils.adjustSharedPerm(new File(r.getDirectory().getAbsolutePath(), "config"),
                settings.getString(Keys.git.createRepositoriesShared, "FALSE"));
        JGitUtils.adjustSharedPerm(new File(r.getDirectory().getAbsolutePath(), "HEAD"),
                settings.getString(Keys.git.createRepositoriesShared, "FALSE"));

        // close the repository object
        r.close();
    }

    // update repository cache
    removeFromCachedRepositoryList(repositoryName);
    // model will actually be replaced on next load because config is stale
    addToCachedRepositoryList(repository);

    if (isCreate && pluginManager != null) {
        for (RepositoryLifeCycleListener listener : pluginManager
                .getExtensions(RepositoryLifeCycleListener.class)) {
            try {
                listener.onCreation(repository);
            } catch (Throwable t) {
                logger.error(String.format("failed to call plugin onCreation %s", repositoryName), t);
            }
        }
    } else if (isRename && pluginManager != null) {
        for (RepositoryLifeCycleListener listener : pluginManager
                .getExtensions(RepositoryLifeCycleListener.class)) {
            try {
                listener.onRename(repositoryName, repository);
            } catch (Throwable t) {
                logger.error(String.format("failed to call plugin onRename %s", repositoryName), t);
            }
        }
    }
}

From source file:com.gitblit.manager.RepositoryManager.java

License:Apache License

protected void configureCommitCache() {
    final int daysToCache = settings.getInteger(Keys.web.activityCacheDays, 14);
    if (daysToCache <= 0) {
        logger.info("Commit cache is disabled");
        return;//from ww w  .  j a v  a  2s . c o  m
    }
    logger.info(MessageFormat.format("Preparing {0} day commit cache...", daysToCache));
    CommitCache.instance().setCacheDays(daysToCache);
    Thread loader = new Thread() {
        @Override
        public void run() {
            long start = System.nanoTime();
            long repoCount = 0;
            long commitCount = 0;
            Date cutoff = CommitCache.instance().getCutoffDate();
            for (String repositoryName : getRepositoryList()) {
                RepositoryModel model = getRepositoryModel(repositoryName);
                if (model != null && model.hasCommits && model.lastChange.after(cutoff)) {
                    repoCount++;
                    Repository repository = getRepository(repositoryName);
                    for (RefModel ref : JGitUtils.getLocalBranches(repository, true, -1)) {
                        if (!ref.getDate().after(cutoff)) {
                            // branch not recently updated
                            continue;
                        }
                        List<?> commits = CommitCache.instance().getCommits(repositoryName, repository,
                                ref.getName());
                        if (commits.size() > 0) {
                            logger.info(MessageFormat.format("  cached {0} commits for {1}:{2}", commits.size(),
                                    repositoryName, ref.getName()));
                            commitCount += commits.size();
                        }
                    }
                    repository.close();
                }
            }
            logger.info(MessageFormat.format(
                    "built {0} day commit cache of {1} commits across {2} repositories in {3} msecs",
                    daysToCache, commitCount, repoCount,
                    TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start)));
        }
    };
    loader.setName("CommitCacheLoader");
    loader.setDaemon(true);
    loader.start();
}

From source file:com.gitblit.PagesFilter.java

License:Apache License

/**
 * Extract the repository name from the url.
 * /*www  . j a  va 2  s .  c o  m*/
 * @param url
 * @return repository name
 */
@Override
protected String extractRepositoryName(String url) {
    // get the repository name from the url by finding a known url suffix
    String repository = "";
    Repository r = null;
    int offset = 0;
    while (r == null) {
        int slash = url.indexOf('/', offset);
        if (slash == -1) {
            repository = url;
        } else {
            repository = url.substring(0, slash);
        }
        r = GitBlit.self().getRepository(repository, false);
        if (r == null) {
            // try again
            offset = slash + 1;
        } else {
            // close the repo
            r.close();
        }
        if (repository.equals(url)) {
            // either only repository in url or no repository found
            break;
        }
    }
    return repository;
}

From source file:com.gitblit.PagesServlet.java

License:Apache License

/**
 * Retrieves the specified resource from the gh-pages branch of the
 * repository./*  ww w.java2 s  .c om*/
 * 
 * @param request
 * @param response
 * @throws javax.servlet.ServletException
 * @throws java.io.IOException
 */
private void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String path = request.getPathInfo();
    if (path.toLowerCase().endsWith(".git")) {
        // forward to url with trailing /
        // this is important for relative pages links
        response.sendRedirect(request.getServletPath() + path + "/");
        return;
    }
    if (path.charAt(0) == '/') {
        // strip leading /
        path = path.substring(1);
    }

    // determine repository and resource from url
    String repository = "";
    String resource = "";
    Repository r = null;
    int offset = 0;
    while (r == null) {
        int slash = path.indexOf('/', offset);
        if (slash == -1) {
            repository = path;
        } else {
            repository = path.substring(0, slash);
        }
        r = GitBlit.self().getRepository(repository, false);
        offset = slash + 1;
        if (offset > 0) {
            resource = path.substring(offset);
        }
        if (repository.equals(path)) {
            // either only repository in url or no repository found
            break;
        }
    }

    ServletContext context = request.getSession().getServletContext();

    try {
        if (r == null) {
            // repository not found!
            String mkd = MessageFormat
                    .format("# Error\nSorry, no valid **repository** specified in this url: {0}!", repository);
            error(response, mkd);
            return;
        }

        // retrieve the content from the repository
        RefModel pages = JGitUtils.getPagesBranch(r);
        RevCommit commit = JGitUtils.getCommit(r, pages.getObjectId().getName());

        if (commit == null) {
            // branch not found!
            String mkd = MessageFormat.format(
                    "# Error\nSorry, the repository {0} does not have a **gh-pages** branch!", repository);
            error(response, mkd);
            r.close();
            return;
        }
        response.setDateHeader("Last-Modified", JGitUtils.getCommitDate(commit).getTime());

        String[] encodings = GitBlit.getEncodings();

        RevTree tree = commit.getTree();
        byte[] content = null;
        if (StringUtils.isEmpty(resource)) {
            // find resource
            String[] files = { "index.html", "index.htm", "index.mkd" };
            for (String file : files) {
                content = JGitUtils.getStringContent(r, tree, file, encodings).getBytes(Constants.ENCODING);
                if (content != null) {
                    resource = file;
                    // assume text/html unless the servlet container
                    // overrides
                    response.setContentType("text/html; charset=" + Constants.ENCODING);
                    break;
                }
            }
        } else {
            // specific resource
            try {
                String contentType = context.getMimeType(resource);
                if (contentType == null) {
                    contentType = "text/plain";
                }
                if (contentType.startsWith("text")) {
                    content = JGitUtils.getStringContent(r, tree, resource, encodings)
                            .getBytes(Constants.ENCODING);
                } else {
                    content = JGitUtils.getByteContent(r, tree, resource);
                }
                response.setContentType(contentType);
            } catch (Exception e) {
            }
        }

        // no content, try custom 404 page
        if (ArrayUtils.isEmpty(content)) {
            String custom404 = JGitUtils.getStringContent(r, tree, "404.html", encodings);
            if (!StringUtils.isEmpty(custom404)) {
                content = custom404.getBytes(Constants.ENCODING);
            }

            // still no content
            if (ArrayUtils.isEmpty(content)) {
                String str = MessageFormat
                        .format("# Error\nSorry, the requested resource **{0}** was not found.", resource);
                content = MarkdownUtils.transformMarkdown(str).getBytes(Constants.ENCODING);
            }

            try {
                // output the content
                logger.warn("Pages 404: " + resource);
                response.setStatus(HttpServletResponse.SC_NOT_FOUND);
                response.getOutputStream().write(content);
                response.flushBuffer();
            } catch (Throwable t) {
                logger.error("Failed to write page to client", t);
            }
            return;
        }

        // check to see if we should transform markdown files
        for (String ext : GitBlit.getStrings(Keys.web.markdownExtensions)) {
            if (resource.endsWith(ext)) {
                String mkd = new String(content, Constants.ENCODING);
                content = MarkdownUtils.transformMarkdown(mkd).getBytes(Constants.ENCODING);
                break;
            }
        }

        try {
            // output the content
            response.getOutputStream().write(content);
            response.flushBuffer();
        } catch (Throwable t) {
            logger.error("Failed to write page to client", t);
        }

        // close the repository
        r.close();
    } catch (Throwable t) {
        logger.error("Failed to write page to client", t);
    }
}

From source file:com.gitblit.plugin.flowdock.TicketMessageGenerator.java

License:Apache License

protected String renderBugtraq(String value, String repository) {
    if (StringUtils.isEmpty(value)) {
        return value;
    }/*from  w  w w  .  j a v a  2 s .  c o m*/

    IRepositoryManager repositoryManager = GitblitContext.getManager(IRepositoryManager.class);
    Repository db = repositoryManager.getRepository(repository);
    try {
        BugtraqProcessor bugtraq = new BugtraqProcessor(settings);
        value = bugtraq.processText(db, repository, value);
    } finally {
        db.close();
    }
    return value;
}

From source file:com.gitblit.plugin.flowdock.TicketMessageGenerator.java

License:Apache License

private List<RevCommit> getCommits(String repositoryName, String baseId, String tipId) {
    IRepositoryManager repositoryManager = GitblitContext.getManager(IRepositoryManager.class);
    Repository db = repositoryManager.getRepository(repositoryName);
    List<RevCommit> list = new ArrayList<RevCommit>();
    RevWalk walk = new RevWalk(db);
    walk.reset();//w ww  .j  a va 2  s . com
    walk.sort(RevSort.TOPO);
    walk.sort(RevSort.REVERSE, true);
    try {
        RevCommit tip = walk.parseCommit(db.resolve(tipId));
        RevCommit base = walk.parseCommit(db.resolve(baseId));
        walk.markStart(tip);
        walk.markUninteresting(base);
        for (;;) {
            RevCommit c = walk.next();
            if (c == null) {
                break;
            }
            list.add(c);
        }
    } catch (IOException e) {
        // Should never happen, the core receive process would have
        // identified the missing object earlier before we got control.
        log.error("failed to get commits", e);
    } finally {
        walk.release();
        db.close();
    }
    return list;
}