Example usage for org.eclipse.jgit.revwalk RevObject getType

List of usage examples for org.eclipse.jgit.revwalk RevObject getType

Introduction

In this page you can find the example usage for org.eclipse.jgit.revwalk RevObject getType.

Prototype

public abstract int getType();

Source Link

Document

Get Git object type.

Usage

From source file:com.github.kaitoy.goslings.server.dao.jgit.ObjectDaoImpl.java

License:Open Source License

@Override
@Cacheable//w ww  .  j a  va  2 s  .co m
public Tree[] getTrees(String token, String[] objectIds) throws DaoException {
    try (RevWalk walk = new RevWalk(resolver.getRepository(token))) {
        List<Tree> trees = new ArrayList<>(objectIds.length);
        for (String objectId : objectIds) {
            try {
                RevObject obj = walk.parseAny(ObjectId.fromString(objectId));
                if (obj.getType() != Constants.OBJ_TREE) {
                    String message = new StringBuilder().append("Failed to get a tree in the repository ")
                            .append(token).append(". ").append(objectId).append(" is not a tree.").toString();
                    LOG.error(message + "It's {}.", obj.getClass());
                    throw new DaoException(message);
                }
                trees.add(convertToTree(token, (RevTree) obj));
            } catch (MissingObjectException e) {
                String message = new StringBuilder().append("Failed to get a tree in the repository ")
                        .append(token).append(". ").append(objectId).append(" doesn't exist.").toString();
                LOG.error(message);
                throw new DaoException(message, e);
            } catch (IOException e) {
                String message = new StringBuilder().append("Failed to get a tree ").append(objectId)
                        .append(" in the repository ").append(token).append(" due to an I/O error.").toString();
                LOG.error(message);
                throw new DaoException(message, e);
            }
        }
        return trees.toArray(new Tree[objectIds.length]);
    }
}

From source file:com.google.gitiles.PathServlet.java

License:Open Source License

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
    GitilesView view = ViewFilter.getView(req);
    Repository repo = ServletUtils.getRepository(req);

    RevWalk rw = new RevWalk(repo);
    try {/*from  w w w .j av  a2s.co m*/
        RevObject obj = rw.peel(rw.parseAny(view.getRevision().getId()));
        RevTree root;

        switch (obj.getType()) {
        case OBJ_COMMIT:
            root = ((RevCommit) obj).getTree();
            break;
        case OBJ_TREE:
            root = (RevTree) obj;
            break;
        default:
            res.setStatus(SC_NOT_FOUND);
            return;
        }

        TreeWalk tw;
        FileType type;
        String path = view.getTreePath();
        if (path.isEmpty()) {
            tw = new TreeWalk(rw.getObjectReader());
            tw.addTree(root);
            tw.setRecursive(false);
            type = FileType.TREE;
        } else {
            tw = TreeWalk.forPath(rw.getObjectReader(), path, root);
            if (tw == null) {
                res.setStatus(SC_NOT_FOUND);
                return;
            }
            type = FileType.forEntry(tw);
            if (type == FileType.TREE) {
                tw.enterSubtree();
                tw.setRecursive(false);
            }
        }

        switch (type) {
        case TREE:
            showTree(req, res, rw, tw, obj);
            break;
        case SYMLINK:
            showSymlink(req, res, rw, tw);
            break;
        case REGULAR_FILE:
        case EXECUTABLE_FILE:
            showFile(req, res, rw, tw);
            break;
        case GITLINK:
            showGitlink(req, res, rw, tw, root);
            break;
        default:
            log.error("Bad file type: %s", type);
            res.setStatus(SC_NOT_FOUND);
            break;
        }
    } catch (LargeObjectException e) {
        res.setStatus(SC_INTERNAL_SERVER_ERROR);
    } finally {
        rw.release();
    }
}

From source file:com.google.gitiles.Revision.java

License:Open Source License

public static Revision peeled(String name, RevObject obj) {
    return peeled(name, obj, obj.getType());
}

From source file:com.google.gitiles.Revision.java

License:Open Source License

public static Revision peel(String name, ObjectId id, RevWalk walk) throws MissingObjectException, IOException {
    RevObject obj = walk.parseAny(id);
    RevObject peeled = walk.peel(obj);/*from  w  ww  .  ja  va 2s .  co m*/
    return new Revision(name, obj, obj.getType(), peeled, peeled.getType());
}

From source file:com.google.gitiles.RevisionServlet.java

License:Open Source License

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
    GitilesView view = ViewFilter.getView(req);
    Repository repo = ServletUtils.getRepository(req);

    RevWalk walk = new RevWalk(repo);
    try {/*  w  w w. ja  v  a 2  s  .c  o  m*/
        List<RevObject> objects = listObjects(walk, view.getRevision().getId());
        List<Map<String, ?>> soyObjects = Lists.newArrayListWithCapacity(objects.size());
        boolean hasBlob = false;

        // TODO(sop): Allow caching commits by SHA-1 when no S cookie is sent.
        for (RevObject obj : objects) {
            try {
                switch (obj.getType()) {
                case OBJ_COMMIT:
                    soyObjects.add(ImmutableMap.of("type", Constants.TYPE_COMMIT, "data",
                            new CommitSoyData(linkifier, req, repo, walk, view).toSoyData((RevCommit) obj,
                                    KeySet.DETAIL_DIFF_TREE)));
                    break;
                case OBJ_TREE:
                    soyObjects.add(ImmutableMap.of("type", Constants.TYPE_TREE, "data",
                            new TreeSoyData(walk, view).toSoyData(obj)));
                    break;
                case OBJ_BLOB:
                    soyObjects.add(ImmutableMap.of("type", Constants.TYPE_BLOB, "data",
                            new BlobSoyData(walk, view).toSoyData(obj)));
                    hasBlob = true;
                    break;
                case OBJ_TAG:
                    soyObjects.add(ImmutableMap.of("type", Constants.TYPE_TAG, "data",
                            new TagSoyData(linkifier, req).toSoyData((RevTag) obj)));
                    break;
                default:
                    log.warn("Bad object type for %s: %s", ObjectId.toString(obj.getId()), obj.getType());
                    res.setStatus(SC_NOT_FOUND);
                    return;
                }
            } catch (MissingObjectException e) {
                log.warn("Missing object " + ObjectId.toString(obj.getId()), e);
                res.setStatus(SC_NOT_FOUND);
                return;
            } catch (IncorrectObjectTypeException e) {
                log.warn("Incorrect object type for " + ObjectId.toString(obj.getId()), e);
                res.setStatus(SC_NOT_FOUND);
                return;
            }
        }

        render(req, res, "gitiles.revisionDetail", ImmutableMap.of("title", view.getRevision().getName(),
                "objects", soyObjects, "hasBlob", hasBlob));
    } finally {
        walk.release();
    }
}

From source file:com.google.gitiles.RevisionServlet.java

License:Open Source License

static List<RevObject> listObjects(RevWalk walk, ObjectId id) throws MissingObjectException, IOException {
    List<RevObject> objects = Lists.newArrayListWithExpectedSize(1);
    while (true) {
        RevObject cur = walk.parseAny(id);
        objects.add(cur);//from  w w w . ja  v  a 2 s.  c o m
        if (cur.getType() == Constants.OBJ_TAG) {
            id = ((RevTag) cur).getObject();
        } else {
            break;
        }
    }
    return objects;
}

From source file:com.google.gitiles.TimeCache.java

License:Open Source License

Long getTime(final RevWalk walk, final ObjectId id) throws IOException {
    try {//from   w ww  .j  ava 2 s .com
        return cache.get(id, new Callable<Long>() {
            @Override
            public Long call() throws IOException {
                RevObject o = walk.parseAny(id);
                while (o instanceof RevTag) {
                    RevTag tag = (RevTag) o;
                    PersonIdent ident = tag.getTaggerIdent();
                    if (ident != null) {
                        return ident.getWhen().getTime() / 1000;
                    }
                    o = tag.getObject();
                    walk.parseHeaders(o);
                }
                if (o.getType() == Constants.OBJ_COMMIT) {
                    return Long.valueOf(((RevCommit) o).getCommitTime());
                }
                return Long.MIN_VALUE;
            }
        });
    } catch (ExecutionException e) {
        Throwables.propagateIfInstanceOf(e.getCause(), IOException.class);
        throw new IOException(e);
    }
}

From source file:com.madgag.agit.git.GitObjects.java

License:Open Source License

public static <T> T evaluate(RevObject revObject, GitObjectFunction<T> f) {
    switch (revObject.getType()) {
    case OBJ_COMMIT:
        return f.apply((RevCommit) revObject);
    case OBJ_TREE:
        return f.apply((RevTree) revObject);
    case OBJ_BLOB:
        return f.apply((RevBlob) revObject);
    case OBJ_TAG:
        return f.apply((RevTag) revObject);
    default:/*  w  w  w. j  a  v  a2  s .c  om*/
        throw new IllegalArgumentException("Git object type '" + revObject.getType() + "' unknown");
    }
}

From source file:it.com.atlassian.labs.speakeasy.util.jgit.WalkFetchConnection.java

License:Eclipse Distribution License

private void process(final ObjectId id) throws TransportException {
    final RevObject obj;
    try {/*from   w w  w.j a v  a  2s  .  c o m*/
        if (id instanceof RevObject) {
            obj = (RevObject) id;
            if (obj.has(COMPLETE))
                return;
            revWalk.parseHeaders(obj);
        } else {
            obj = revWalk.parseAny(id);
            if (obj.has(COMPLETE))
                return;
        }
    } catch (IOException e) {
        throw new TransportException(MessageFormat.format(JGitText.get().cannotRead, id.name()), e);
    }

    switch (obj.getType()) {
    case Constants.OBJ_BLOB:
        processBlob(obj);
        break;
    case Constants.OBJ_TREE:
        processTree(obj);
        break;
    case Constants.OBJ_COMMIT:
        processCommit(obj);
        break;
    case Constants.OBJ_TAG:
        processTag(obj);
        break;
    default:
        throw new TransportException(MessageFormat.format(JGitText.get().unknownObjectType, id.name()));
    }

    // If we had any prior errors fetching this object they are
    // now resolved, as the object was parsed successfully.
    //
    fetchErrors.remove(id);
}

From source file:it.com.atlassian.labs.speakeasy.util.jgit.WalkFetchConnection.java

License:Eclipse Distribution License

private void markLocalObjComplete(RevObject obj) throws IOException {
    while (obj.getType() == Constants.OBJ_TAG) {
        obj.add(COMPLETE);//  ww  w . j  a v  a 2 s .  c  o  m
        obj = ((RevTag) obj).getObject();
        revWalk.parseHeaders(obj);
    }

    switch (obj.getType()) {
    case Constants.OBJ_BLOB:
        obj.add(COMPLETE);
        break;
    case Constants.OBJ_COMMIT:
        pushLocalCommit((RevCommit) obj);
        break;
    case Constants.OBJ_TREE:
        markTreeComplete((RevTree) obj);
        break;
    }
}