List of usage examples for org.eclipse.jgit.revwalk RevObject getType
public abstract int getType();
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; } }