Skip to content

Commit

Permalink
GenericTrigger.java
Browse files Browse the repository at this point in the history
  • Loading branch information
caoli5288 committed Jun 11, 2019
1 parent b62eba8 commit fcbf362
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 2 deletions.
49 changes: 49 additions & 0 deletions src/main/java/com/mengcraft/simpleorm/GenericTrigger.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.mengcraft.simpleorm;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import lombok.AccessLevel;
import lombok.EqualsAndHashCode;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import org.json.simple.JSONObject;

import java.util.UUID;
import java.util.function.BiConsumer;

public class GenericTrigger {

private final Multimap<String, TriggerListener> functions = ArrayListMultimap.create();

public TriggerListener on(@NonNull String category, @NonNull BiConsumer<JSONObject, JSONObject> function) {
TriggerListener listener = new TriggerListener(category, function);
functions.put(category, listener);
return listener;
}

public JSONObject trigger(@NonNull String category, @NonNull JSONObject params) {
JSONObject object = new JSONObject();
for (TriggerListener listener : functions.get(category)) {
listener.function.accept(params, object);
}
return object;
}

public JSONObject trigger(@NonNull String category) {
return trigger(category, new JSONObject());
}

@EqualsAndHashCode(exclude = "function")
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public class TriggerListener {

private final UUID id = UUID.randomUUID();
private final String category;
private final BiConsumer<JSONObject, JSONObject> function;

public void cancel() {
functions.remove(category, this);
}
}

}
9 changes: 7 additions & 2 deletions src/main/java/com/mengcraft/simpleorm/ORM.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,11 @@

public class ORM extends JavaPlugin {

private static final GenericTrigger GENERIC_TRIGGER = new GenericTrigger();
private static final ThreadLocal<Gson> JSON_LAZY = ThreadLocal.withInitial(GsonUtils::createJsonInBuk);
private static EbeanHandler globalHandler;
private static RedisWrapper globalRedisWrapper;
private static MongoWrapper globalMongoWrapper;
private static ThreadLocal<Gson> jsonLazy = ThreadLocal.withInitial(GsonUtils::createJsonInBuk);
private static ORM plugin;

@Override
Expand Down Expand Up @@ -137,12 +138,16 @@ public static EbeanHandler getDataHandler(JavaPlugin plugin) {
return EbeanManager.DEFAULT.getHandler(plugin);
}

public static GenericTrigger getGenericTrigger() {
return GENERIC_TRIGGER;
}

public static boolean nil(Object any) {
return any == null;
}

public static Gson json() {
return jsonLazy.get();
return JSON_LAZY.get();
}

public static Map<String, Object> serialize(Object any) {
Expand Down

0 comments on commit fcbf362

Please sign in to comment.