mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-12-27 19:47:49 +01:00
Made a bunch of API holders use AtomicReference
This commit is contained in:
parent
12971b30ba
commit
e6f879783d
@ -18,6 +18,7 @@ package com.djrapitops.plan.capability;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
@ -49,7 +50,7 @@ public interface CapabilityService {
|
||||
* @param isEnabledListener The boolean given to the method tells if Plan has enabled successfully.
|
||||
*/
|
||||
default void registerEnableListener(Consumer<Boolean> isEnabledListener) {
|
||||
ListHolder.ENABLE_LISTENERS.add(isEnabledListener);
|
||||
ListHolder.ENABLE_LISTENERS.get().add(isEnabledListener);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -64,6 +65,8 @@ public interface CapabilityService {
|
||||
}
|
||||
|
||||
class ListHolder {
|
||||
volatile static List<Consumer<Boolean>> ENABLE_LISTENERS = new CopyOnWriteArrayList<>();
|
||||
volatile static AtomicReference<List<Consumer<Boolean>>> ENABLE_LISTENERS = new AtomicReference<>(
|
||||
new CopyOnWriteArrayList<>()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ import com.djrapitops.plan.delivery.web.resolver.Resolver;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
@ -34,7 +35,7 @@ import java.util.regex.Pattern;
|
||||
public interface ResolverService {
|
||||
|
||||
static ResolverService getInstance() {
|
||||
return Optional.ofNullable(ResolverService.Holder.service)
|
||||
return Optional.ofNullable(ResolverService.Holder.service.get())
|
||||
.orElseThrow(() -> new IllegalStateException("ResolverService has not been initialised yet."));
|
||||
}
|
||||
|
||||
@ -88,14 +89,14 @@ public interface ResolverService {
|
||||
List<Resolver> getResolvers(String target);
|
||||
|
||||
class Holder {
|
||||
volatile static ResolverService service;
|
||||
volatile static AtomicReference<ResolverService> service = new AtomicReference<>();
|
||||
|
||||
private Holder() {
|
||||
/* Static variable holder */
|
||||
}
|
||||
|
||||
static void set(ResolverService service) {
|
||||
ResolverService.Holder.service = service;
|
||||
ResolverService.Holder.service.set(service);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ package com.djrapitops.plan.delivery.web;
|
||||
import com.djrapitops.plan.delivery.web.resource.WebResource;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
/**
|
||||
@ -29,7 +30,7 @@ import java.util.function.Supplier;
|
||||
public interface ResourceService {
|
||||
|
||||
static ResourceService getInstance() {
|
||||
return Optional.ofNullable(ResourceService.Holder.service)
|
||||
return Optional.ofNullable(ResourceService.Holder.service.get())
|
||||
.orElseThrow(() -> new IllegalStateException("ResourceService has not been initialised yet."));
|
||||
}
|
||||
|
||||
@ -102,14 +103,14 @@ public interface ResourceService {
|
||||
}
|
||||
|
||||
class Holder {
|
||||
volatile static ResourceService service;
|
||||
volatile static AtomicReference<ResourceService> service = new AtomicReference<>();
|
||||
|
||||
private Holder() {
|
||||
/* Static variable holder */
|
||||
}
|
||||
|
||||
static void set(ResourceService service) {
|
||||
ResourceService.Holder.service = service;
|
||||
ResourceService.Holder.service.set(service);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ package com.djrapitops.plan.extension;
|
||||
import com.djrapitops.plan.extension.extractor.ExtensionExtractor;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
/**
|
||||
* Interface for registering {@link DataExtension}s.
|
||||
@ -44,7 +45,7 @@ public interface ExtensionService {
|
||||
* @throws IllegalStateException If Plan is installed, but not enabled.
|
||||
*/
|
||||
static ExtensionService getInstance() {
|
||||
return Optional.ofNullable(Holder.service)
|
||||
return Optional.ofNullable(Holder.service.get())
|
||||
.orElseThrow(() -> new IllegalStateException("ExtensionService has not been initialised yet."));
|
||||
}
|
||||
|
||||
@ -70,14 +71,14 @@ public interface ExtensionService {
|
||||
void unregister(DataExtension extension);
|
||||
|
||||
class Holder {
|
||||
volatile static ExtensionService service;
|
||||
volatile static AtomicReference<ExtensionService> service = new AtomicReference<>();
|
||||
|
||||
private Holder() {
|
||||
/* Static variable holder */
|
||||
}
|
||||
|
||||
static void set(ExtensionService service) {
|
||||
Holder.service = service;
|
||||
Holder.service.set(service);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -21,6 +21,7 @@ import java.sql.SQLException;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
@ -40,7 +41,7 @@ public interface QueryService {
|
||||
* @throws IllegalStateException If Plan is installed, but not enabled.
|
||||
*/
|
||||
static QueryService getInstance() {
|
||||
return Optional.ofNullable(Holder.service)
|
||||
return Optional.ofNullable(Holder.service.get())
|
||||
.orElseThrow(() -> new IllegalStateException("QueryService has not been initialised yet."));
|
||||
}
|
||||
|
||||
@ -149,14 +150,14 @@ public interface QueryService {
|
||||
}
|
||||
|
||||
class Holder {
|
||||
volatile static QueryService service;
|
||||
volatile static AtomicReference<QueryService> service = new AtomicReference<>();
|
||||
|
||||
private Holder() {
|
||||
/* Static variable holder */
|
||||
}
|
||||
|
||||
static void set(QueryService service) {
|
||||
Holder.service = service;
|
||||
Holder.service.set(service);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,7 @@ package com.djrapitops.plan.settings;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
/**
|
||||
@ -33,7 +34,7 @@ import java.util.function.Supplier;
|
||||
public interface SettingsService {
|
||||
|
||||
static SettingsService getInstance() {
|
||||
return Optional.ofNullable(Holder.service)
|
||||
return Optional.ofNullable(Holder.service.get())
|
||||
.orElseThrow(() -> new IllegalStateException("SettingsService has not been initialised yet."));
|
||||
}
|
||||
|
||||
@ -65,14 +66,14 @@ public interface SettingsService {
|
||||
List<String> getStringList(String path, Supplier<List<String>> defaultValue);
|
||||
|
||||
class Holder {
|
||||
volatile static SettingsService service;
|
||||
volatile static AtomicReference<SettingsService> service = new AtomicReference<>();
|
||||
|
||||
private Holder() {
|
||||
/* Static variable holder */
|
||||
}
|
||||
|
||||
static void set(SettingsService service) {
|
||||
Holder.service = service;
|
||||
Holder.service.set(service);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@ import java.util.function.Consumer;
|
||||
public class CapabilitySvc implements CapabilityService {
|
||||
|
||||
public static void notifyAboutEnable(boolean isEnabled) {
|
||||
for (Consumer<Boolean> enableListener : CapabilityService.ListHolder.ENABLE_LISTENERS) {
|
||||
for (Consumer<Boolean> enableListener : CapabilityService.ListHolder.ENABLE_LISTENERS.get()) {
|
||||
enableListener.accept(isEnabled);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user