From f4882c1c149c7db55b7e78996932acc26bba9a29 Mon Sep 17 00:00:00 2001 From: Luck Date: Thu, 17 May 2018 18:19:45 +0100 Subject: [PATCH] Cache the creation of Sponge proxy subject classes (#1005) --- .../luckperms/sponge/service/internal/HolderSubject.java | 9 +++++++-- .../sponge/service/persisted/PersistedSubject.java | 7 ++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/service/internal/HolderSubject.java b/sponge/src/main/java/me/lucko/luckperms/sponge/service/internal/HolderSubject.java index 58f24c0f8..0b31728bc 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/service/internal/HolderSubject.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/service/internal/HolderSubject.java @@ -61,6 +61,8 @@ public abstract class HolderSubject implements LPSub private final HolderSubjectData subjectData; private final HolderSubjectData transientSubjectData; + private Subject spongeSubject = null; + HolderSubject(LPSpongePlugin plugin, T parent) { this.parent = parent; this.plugin = plugin; @@ -78,8 +80,11 @@ public abstract class HolderSubject implements LPSub } @Override - public Subject sponge() { - return ProxyFactory.toSponge(this); + public synchronized Subject sponge() { + if (this.spongeSubject == null) { + this.spongeSubject = ProxyFactory.toSponge(this); + } + return this.spongeSubject; } @Override diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/service/persisted/PersistedSubject.java b/sponge/src/main/java/me/lucko/luckperms/sponge/service/persisted/PersistedSubject.java index cce2778a2..4a1d44508 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/service/persisted/PersistedSubject.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/service/persisted/PersistedSubject.java @@ -62,6 +62,8 @@ public class PersistedSubject extends CalculatedSubject implements LPSubject { private final PersistedSubjectData subjectData; private final CalculatedSubjectData transientSubjectData; + private Subject spongeSubject = null; + /** * The save buffer instance for saving changes to disk */ @@ -124,7 +126,10 @@ public class PersistedSubject extends CalculatedSubject implements LPSubject { @Override public Subject sponge() { - return ProxyFactory.toSponge(this); + if (this.spongeSubject == null) { + this.spongeSubject = ProxyFactory.toSponge(this); + } + return this.spongeSubject; } @Override