• Y
  • List All
  • Feedback
    • This Project
    • All Projects
Profile Account Log out
  • Favorite
  • Project
  • Recent History
Loading...
  • Log in
  • Sign up
kadrians / Testing_for_YONA star
  • Project homeH
  • CodeC
  • IssueI 1
  • Pull requestP
  • Review R
  • MilestoneM
  • BoardB 2
  • Files
  • Commit
  • Branches
Testing_for_YONAsourceappactorsPostReceiveActor.java
Download as .zip file
File name
Commit message
Commit date
bin
Yona 1.16.0 Upload
02-04
lib
Yona 1.16.0 Upload
02-04
share/doc/api
Yona 1.16.0 Upload
02-04
source
Source Code Upload
02-04
README.md
Yona 1.16.0 Upload
02-04
File name
Commit message
Commit date
app
Source Code Upload
02-04
conf
Source Code Upload
02-04
docs
Source Code Upload
02-04
lib
Source Code Upload
02-04
project
Source Code Upload
02-04
public
Source Code Upload
02-04
support-script
Source Code Upload
02-04
test
Source Code Upload
02-04
.gitignore
Source Code Upload
02-04
.mailmap
Source Code Upload
02-04
.travis.yml
Source Code Upload
02-04
AUTHORS
Source Code Upload
02-04
LICENSE
Source Code Upload
02-04
NOTICE
Source Code Upload
02-04
README.md
Source Code Upload
02-04
build.sbt
Source Code Upload
02-04
dev.sh
Source Code Upload
02-04
dist.sh
Source Code Upload
02-04
is-alive-bot.sh
Source Code Upload
02-04
minify-js.sh
Source Code Upload
02-04
restart.sh
Source Code Upload
02-04
File name
Commit message
Commit date
actions
Source Code Upload
02-04
actors
Source Code Upload
02-04
assets/stylesheets
Source Code Upload
02-04
controllers
Source Code Upload
02-04
data
Source Code Upload
02-04
errors
Source Code Upload
02-04
mailbox
Source Code Upload
02-04
models
Source Code Upload
02-04
notification
Source Code Upload
02-04
playRepository
Source Code Upload
02-04
service
Source Code Upload
02-04
utils
Source Code Upload
02-04
validation
Source Code Upload
02-04
views
Source Code Upload
02-04
Global.java
Source Code Upload
02-04
File name
Commit message
Commit date
CommitsNotificationActor.java
Source Code Upload
02-04
IssueReferredFromCommitEventActor.java
Source Code Upload
02-04
PostReceiveActor.java
Source Code Upload
02-04
PullRequestActor.java
Source Code Upload
02-04
PullRequestMergingActor.java
Source Code Upload
02-04
RelatedPullRequestMergingActor.java
Source Code Upload
02-04
ValidationEmailSender.java
Source Code Upload
02-04
Nell 02-04 2600fe6 Source Code Upload UNIX
Raw Open in browser Change history
/** * Yobi, Project Hosting SW * * Copyright 2013 NAVER Corp. * http://yobi.io * * @author Keesun Baik * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package actors; import akka.actor.UntypedActor; import models.PostReceiveMessage; import models.Project; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevWalk; import org.eclipse.jgit.transport.ReceiveCommand; import playRepository.GitRepository; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * This abstract implementation can be used to add after-receive jobs. * To add a post hook, extends this classs and execute it with Akka * * @author Keesun Baik * @see IssueReferredFromCommitEventActor * @see CommitsNotificationActor */ public abstract class PostReceiveActor extends UntypedActor { @Override public void onReceive(Object message) { if(!(message instanceof PostReceiveMessage)) { return; } PostReceiveMessage cap = (PostReceiveMessage)message; doReceive(cap); } abstract void doReceive(PostReceiveMessage cap); class CommitAndRefNames { List<RevCommit> commits = new ArrayList<>(); List<String> refNames = new ArrayList<>(); public List<RevCommit> getCommits() { return commits; } public void setCommits(List<RevCommit> commits) { this.commits = commits; } public List<String> getRefNames() { return refNames; } public void setRefNames(List<String> refNames) { this.refNames = refNames; } public void addAll(Collection<? extends RevCommit> revCommits) { this.commits.addAll(revCommits); } public void add(String refName) { this.refNames.add(refName); } } protected CommitAndRefNames commitAndRefNames(PostReceiveMessage message) { CommitAndRefNames car = new CommitAndRefNames(); for(ReceiveCommand command : message.getCommands()) { if(isNewOrUpdateCommand(command)) { car.addAll(parseCommitsFrom(command, message.getProject())); car.add(command.getRefName()); } } return car; } protected boolean isNewOrUpdateCommand(ReceiveCommand command) { List<ReceiveCommand.Type> allowdTypes = new ArrayList<>(); allowdTypes.add(ReceiveCommand.Type.CREATE); allowdTypes.add(ReceiveCommand.Type.UPDATE); allowdTypes.add(ReceiveCommand.Type.UPDATE_NONFASTFORWARD); return allowdTypes.contains(command.getType()); } protected Collection<? extends RevCommit> parseCommitsFrom(ReceiveCommand command, Project project) { Repository repository = GitRepository.buildGitRepository(project); List<RevCommit> list = new ArrayList<>(); try { ObjectId endRange = command.getNewId(); ObjectId startRange = command.getOldId(); RevWalk rw = new RevWalk(repository); rw.markStart(rw.parseCommit(endRange)); if (startRange.equals(ObjectId.zeroId())) { // maybe this is a tag or an orphan branch list.add(rw.parseCommit(endRange)); rw.dispose(); return list; } else { rw.markUninteresting(rw.parseCommit(startRange)); } for (RevCommit rev : rw) { list.add(rev); } rw.dispose(); } catch (IOException e) { e.printStackTrace(); } return list; } }

          
        
    
    
Copyright Yona authors & © NAVER Corp. & NAVER LABS Supported by NAVER CLOUD PLATFORM

or
login with Google Sign in with Google
Reset password | Sign up