List of usage examples for org.eclipse.jgit.transport PreReceiveHook PreReceiveHook
PreReceiveHook
From source file:org.kie.commons.java.nio.fs.jgit.JGitFileSystemProvider.java
License:Apache License
private void buildAndStartDeamon() { deamonService = new Daemon(new InetSocketAddress(DEAMON_HOST, DEAMON_PORT)); deamonService.getService("git-receive-pack").setEnabled(DEAMON_UPLOAD); deamonService.setRepositoryResolver(new RepositoryResolverImpl()); deamonService.setReceivePackFactory(new ReceivePackFactory<DaemonClient>() { @Override//from w ww .j a v a2s . c o m public ReceivePack create(final DaemonClient req, final Repository db) throws ServiceNotEnabledException, ServiceNotAuthorizedException { return new ReceivePack(db) { { final ClusterService clusterService = clusterMap.get(db); final JGitFileSystem fs = repoIndex.get(db); final String treeRef = "master"; final ObjectId oldHead = JGitUtil.getTreeRefObjectId(db, treeRef); setPreReceiveHook(new PreReceiveHook() { @Override public void onPreReceive(final ReceivePack rp, final Collection<ReceiveCommand> commands) { if (clusterService != null) { clusterService.lock(); } } }); setPostReceiveHook(new PostReceiveHook() { @Override public void onPostReceive(final ReceivePack rp, final Collection<ReceiveCommand> commands) { final ObjectId newHead = JGitUtil.getTreeRefObjectId(db, treeRef); notifyDiffs(fs, treeRef, oldHead, newHead); if (clusterService != null) { clusterService.broadcast(new MessageType() { @Override public String toString() { return "SYNC_FS"; } @Override public int hashCode() { return "SYNC_FS".hashCode(); } }, new HashMap<String, String>() { { put("fs_scheme", "git"); put("fs_id", fs.id()); put("fs_uri", fs.toString()); } }); clusterService.unlock(); } } }); } }; } }); try { deamonService.start(); } catch (java.io.IOException e) { throw new IOException(e); } }
From source file:org.uberfire.java.nio.fs.jgit.JGitFileSystemProvider.java
License:Apache License
private void buildAndStartSSH() { final ReceivePackFactory receivePackFactory = new ReceivePackFactory<BaseGitCommand>() { @Override//from w w w .ja v a 2s. com public ReceivePack create(final BaseGitCommand req, final Repository db) throws ServiceNotEnabledException, ServiceNotAuthorizedException { return new ReceivePack(db) { { final ClusterService clusterService = clusterMap.get(db); final JGitFileSystem fs = repoIndex.get(db); final Map<String, ObjectId> oldTreeRefs = new HashMap<String, ObjectId>(); setPreReceiveHook(new PreReceiveHook() { @Override public void onPreReceive(final ReceivePack rp, final Collection<ReceiveCommand> commands) { if (clusterService != null) { clusterService.lock(); } for (final ReceiveCommand command : commands) { oldTreeRefs.put(command.getRefName(), JGitUtil.getTreeRefObjectId(db, command.getRefName())); } } }); setPostReceiveHook(new PostReceiveHook() { @Override public void onPostReceive(final ReceivePack rp, final Collection<ReceiveCommand> commands) { for (Map.Entry<String, ObjectId> oldTreeRef : oldTreeRefs.entrySet()) { notifyDiffs(fs, oldTreeRef.getKey(), "<ssh>", req.getUser().getName(), oldTreeRef.getValue(), JGitUtil.getTreeRefObjectId(db, oldTreeRef.getKey())); } if (clusterService != null) { //TODO {porcelli} hack, that should be addressed in future clusterService.broadcast(DEFAULT_IO_SERVICE_NAME, new MessageType() { @Override public String toString() { return "SYNC_FS"; } @Override public int hashCode() { return "SYNC_FS".hashCode(); } }, new HashMap<String, String>() { { put("fs_scheme", "git"); put("fs_id", fs.id()); put("fs_uri", fs.toString()); } }); clusterService.unlock(); } } }); } }; } }; gitSSHService = new GitSSHService(); gitSSHService.setup(SSH_FILE_CERT_DIR, SSH_HOST_ADDR, SSH_PORT, authenticationManager, authorizationManager, receivePackFactory, new RepositoryResolverImpl<BaseGitCommand>()); gitSSHService.start(); }