Example usage for org.eclipse.jgit.transport PreReceiveHook PreReceiveHook

List of usage examples for org.eclipse.jgit.transport PreReceiveHook PreReceiveHook

Introduction

In this page you can find the example usage for org.eclipse.jgit.transport PreReceiveHook PreReceiveHook.

Prototype

PreReceiveHook

Source Link

Usage

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();
}