From bb80b7e9fa8749bc97bc32d23eb97e2a57c8ca16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=BF=E3=81=9E=40CrazyBeatCoder?= Date: Thu, 1 Mar 2018 23:57:10 +0900 Subject: [PATCH] Add CommitEventEntity. fixes #350 @50m --- komeiji-bot.iml | 2 +- pom.xml | 4 +- .../komeiji/GitHubHookHandlerServlet.java | 9 +++-- .../mizo0203/komeiji/repo/OfyRepository.java | 18 +++++++++ .../komeiji/repo/objectify/OfyHelper.java | 27 ++++++++++++++ .../objectify/entity/CommitEventEntity.java | 37 +++++++++++++++++++ src/main/webapp/WEB-INF/web.xml | 13 +++++++ 7 files changed, 104 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/mizo0203/komeiji/repo/OfyRepository.java create mode 100644 src/main/java/com/mizo0203/komeiji/repo/objectify/OfyHelper.java create mode 100644 src/main/java/com/mizo0203/komeiji/repo/objectify/entity/CommitEventEntity.java diff --git a/komeiji-bot.iml b/komeiji-bot.iml index 5f5b12a..460ded8 100644 --- a/komeiji-bot.iml +++ b/komeiji-bot.iml @@ -17,7 +17,7 @@ - + diff --git a/pom.xml b/pom.xml index 2f75185..6ea2bd7 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,7 @@ Copyright 2015 Google Inc. com.googlecode.objectify objectify - 5.1.21 + 5.1.22 org.apache.httpcomponents @@ -125,7 +125,7 @@ Copyright 2015 Google Inc. 0.39 test - + diff --git a/src/main/java/com/mizo0203/komeiji/GitHubHookHandlerServlet.java b/src/main/java/com/mizo0203/komeiji/GitHubHookHandlerServlet.java index d0316ea..8deddac 100644 --- a/src/main/java/com/mizo0203/komeiji/GitHubHookHandlerServlet.java +++ b/src/main/java/com/mizo0203/komeiji/GitHubHookHandlerServlet.java @@ -5,10 +5,12 @@ import com.mizo0203.komeiji.domain.UseCase; import com.mizo0203.komeiji.domain.difine.GitHubUser; import com.mizo0203.komeiji.domain.difine.TwitterUser; +import com.mizo0203.komeiji.repo.OfyRepository; import com.mizo0203.komeiji.repo.github.data.Comment; import com.mizo0203.komeiji.repo.github.data.Commit; import com.mizo0203.komeiji.repo.github.data.CommitCommentEvent; import com.mizo0203.komeiji.repo.github.data.PushEvent; +import com.mizo0203.komeiji.repo.objectify.entity.CommitEventEntity; import org.apache.commons.io.IOUtils; import twitter4j.Status; @@ -97,14 +99,15 @@ private void onPushEvent(String body) throws IOException { useCase.updateStatus( TwitterUser.MIZO0203, new CommitMessageTweetFormat().format(commit)); if (status != null) { - storeCommitEvent(status.getId(), commit.getId(), pushEvent.getRepository().getName()); + storeCommitEvent(status.getId(), pushEvent.getRepository().getName(), commit.getId()); } } } } - private void storeCommitEvent(long statusId, String commitId, String repositoryName) { - // TODO + private void storeCommitEvent(long statusId, String repositoryName, String commitId) { + OfyRepository.getInstance() + .saveKeyEntity(new CommitEventEntity(statusId, repositoryName, commitId)); } @Override diff --git a/src/main/java/com/mizo0203/komeiji/repo/OfyRepository.java b/src/main/java/com/mizo0203/komeiji/repo/OfyRepository.java new file mode 100644 index 0000000..144ee20 --- /dev/null +++ b/src/main/java/com/mizo0203/komeiji/repo/OfyRepository.java @@ -0,0 +1,18 @@ +package com.mizo0203.komeiji.repo; + +import com.googlecode.objectify.ObjectifyService; +import com.mizo0203.komeiji.repo.objectify.entity.CommitEventEntity; + +public class OfyRepository { + private static final OfyRepository ourInstance = new OfyRepository(); + + private OfyRepository() {} + + public static OfyRepository getInstance() { + return ourInstance; + } + + public void saveKeyEntity(CommitEventEntity entity) { + ObjectifyService.ofy().save().entity(entity).now(); + } +} diff --git a/src/main/java/com/mizo0203/komeiji/repo/objectify/OfyHelper.java b/src/main/java/com/mizo0203/komeiji/repo/objectify/OfyHelper.java new file mode 100644 index 0000000..1774b80 --- /dev/null +++ b/src/main/java/com/mizo0203/komeiji/repo/objectify/OfyHelper.java @@ -0,0 +1,27 @@ +package com.mizo0203.komeiji.repo.objectify; + +import com.googlecode.objectify.ObjectifyService; +import com.mizo0203.komeiji.repo.objectify.entity.CommitEventEntity; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +/** + * OfyHelper, a ServletContextListener, is setup in web.xml to run before a JSP is run. This is + * required to let JSP's access OfyRepository. + */ +public class OfyHelper implements ServletContextListener { + + @Override + public void contextInitialized(ServletContextEvent event) { + // This will be invoked as part of a warmup request, or the first user + // request if no warmup + // request. + ObjectifyService.register(CommitEventEntity.class); + } + + @Override + public void contextDestroyed(ServletContextEvent event) { + // App Engine does not currently invoke this method. + } +} diff --git a/src/main/java/com/mizo0203/komeiji/repo/objectify/entity/CommitEventEntity.java b/src/main/java/com/mizo0203/komeiji/repo/objectify/entity/CommitEventEntity.java new file mode 100644 index 0000000..39d6665 --- /dev/null +++ b/src/main/java/com/mizo0203/komeiji/repo/objectify/entity/CommitEventEntity.java @@ -0,0 +1,37 @@ +package com.mizo0203.komeiji.repo.objectify.entity; + +import com.googlecode.objectify.annotation.Entity; +import com.googlecode.objectify.annotation.Id; +import com.mizo0203.komeiji.repo.objectify.OfyHelper; + +/** + * The @Entity tells Objectify about our entity. We also register it in {@link OfyHelper} Our + * primary key @Id is set automatically by the Google Datastore for us. + * + *

We add a @Parent to tell the object about its ancestor. We are doing this to support many + * guestbooks. Objectify, unlike the AppEngine library requires that you specify the fields you want + * to index using @Index. Only indexing the fields you need can lead to substantial gains in + * performance -- though if not indexing your data from the start will require indexing it later. + * + *

NOTE - all the properties are PUBLIC so that can keep the code simple. + */ +@SuppressWarnings({"FieldCanBeLocal", "unused"}) +@Entity +public class CommitEventEntity { + + @Id private long statusId; + + private String repositoryName; + + private String commitId; + + public CommitEventEntity() { + // CommitEventEntity must have a no-arg constructor + } + + public CommitEventEntity(long statusId, String repositoryName, String commitId) { + this.statusId = statusId; + this.repositoryName = repositoryName; + this.commitId = commitId; + } +} diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index d9dd1b1..dd61741 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -89,6 +89,19 @@ admin + + + ObjectifyFilter + com.googlecode.objectify.ObjectifyFilter + + + ObjectifyFilter + /* + + + com.mizo0203.komeiji.repo.objectify.OfyHelper + + index.html