Line data Source code
1 : // Copyright (C) 2014 The Android Open Source Project 2 : // 3 : // Licensed under the Apache License, Version 2.0 (the "License"); 4 : // you may not use this file except in compliance with the License. 5 : // You may obtain a copy of the License at 6 : // 7 : // http://www.apache.org/licenses/LICENSE-2.0 8 : // 9 : // Unless required by applicable law or agreed to in writing, software 10 : // distributed under the License is distributed on an "AS IS" BASIS, 11 : // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 : // See the License for the specific language governing permissions and 13 : // limitations under the License. 14 : 15 : package com.google.gerrit.server.events; 16 : 17 : import com.google.common.collect.ImmutableMap; 18 : import java.util.HashMap; 19 : import java.util.Map; 20 : 21 : /** Class for registering event types */ 22 0 : public class EventTypes { 23 3 : private static final Map<String, Class<?>> typesByString = new HashMap<>(); 24 : 25 : static { 26 3 : register(AssigneeChangedEvent.TYPE, AssigneeChangedEvent.class); 27 3 : register(ChangeAbandonedEvent.TYPE, ChangeAbandonedEvent.class); 28 3 : register(ChangeDeletedEvent.TYPE, ChangeDeletedEvent.class); 29 3 : register(ChangeMergedEvent.TYPE, ChangeMergedEvent.class); 30 3 : register(ChangeRestoredEvent.TYPE, ChangeRestoredEvent.class); 31 3 : register(CommentAddedEvent.TYPE, CommentAddedEvent.class); 32 3 : register(CommitReceivedEvent.TYPE, CommitReceivedEvent.class); 33 3 : register(HashtagsChangedEvent.TYPE, HashtagsChangedEvent.class); 34 3 : register(PatchSetCreatedEvent.TYPE, PatchSetCreatedEvent.class); 35 3 : register(PrivateStateChangedEvent.TYPE, PrivateStateChangedEvent.class); 36 3 : register(ProjectCreatedEvent.TYPE, ProjectCreatedEvent.class); 37 3 : register(RefReceivedEvent.TYPE, RefReceivedEvent.class); 38 3 : register(RefUpdatedEvent.TYPE, RefUpdatedEvent.class); 39 3 : register(ReviewerAddedEvent.TYPE, ReviewerAddedEvent.class); 40 3 : register(ReviewerDeletedEvent.TYPE, ReviewerDeletedEvent.class); 41 3 : register(TopicChangedEvent.TYPE, TopicChangedEvent.class); 42 3 : register(VoteDeletedEvent.TYPE, VoteDeletedEvent.class); 43 3 : register(WorkInProgressStateChangedEvent.TYPE, WorkInProgressStateChangedEvent.class); 44 3 : } 45 : 46 : /** 47 : * Register an event type and associated class. 48 : * 49 : * @param eventType The event type to register. 50 : * @param eventClass The event class to register. 51 : */ 52 : public static void register(String eventType, Class<? extends Event> eventClass) { 53 3 : typesByString.put(eventType, eventClass); 54 3 : } 55 : 56 : /** 57 : * Get the class for an event type. 58 : * 59 : * @param type The type. 60 : * @return The event class, or null if no class is registered with the given type 61 : */ 62 : public static Class<?> getClass(String type) { 63 1 : return typesByString.get(type); 64 : } 65 : 66 : /** 67 : * Get a copy of all currently registered events. 68 : * 69 : * <p>The key is the one given to the evenType parameter of the {@link #register} method. 70 : * 71 : * @return ImmutableMap of event types, Event classes. 72 : */ 73 : public static Map<String, Class<?>> getRegisteredEvents() { 74 1 : return ImmutableMap.copyOf(typesByString); 75 : } 76 : }