mirror of
https://github.com/AngelAuraMC/Amethyst-Android.git
synced 2025-09-18 09:07:48 -04:00
Refactor ExtraCore
This commit is contained in:
parent
d18faffce6
commit
6fe447410c
@ -17,24 +17,24 @@ public final class ExtraCore {
|
|||||||
private ExtraCore(){}
|
private ExtraCore(){}
|
||||||
|
|
||||||
// Singleton instance
|
// Singleton instance
|
||||||
private static ExtraCore extraCoreSingleton = null;
|
private static ExtraCore sExtraCoreSingleton = null;
|
||||||
|
|
||||||
// Store the key-value pair
|
// Store the key-value pair
|
||||||
private final Map<String, Object> valueMap = new ConcurrentHashMap<>();
|
private final Map<String, Object> mValueMap = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
// Store what each ExtraListener listen to
|
// Store what each ExtraListener listen to
|
||||||
private final Map<String, ConcurrentLinkedQueue<WeakReference<ExtraListener>>> listenerMap = new ConcurrentHashMap<>();
|
private final Map<String, ConcurrentLinkedQueue<WeakReference<ExtraListener>>> mListenerMap = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
// All public methods will pass through this one
|
// All public methods will pass through this one
|
||||||
private static ExtraCore getInstance(){
|
private static ExtraCore getInstance(){
|
||||||
if(extraCoreSingleton == null){
|
if(sExtraCoreSingleton == null){
|
||||||
synchronized(ExtraCore.class){
|
synchronized(ExtraCore.class){
|
||||||
if(extraCoreSingleton == null){
|
if(sExtraCoreSingleton == null){
|
||||||
extraCoreSingleton = new ExtraCore();
|
sExtraCoreSingleton = new ExtraCore();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return extraCoreSingleton;
|
return sExtraCoreSingleton;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,8 +45,8 @@ public final class ExtraCore {
|
|||||||
public static void setValue(String key, Object value){
|
public static void setValue(String key, Object value){
|
||||||
if(value == null || key == null) return; // null values create an NPE on insertion
|
if(value == null || key == null) return; // null values create an NPE on insertion
|
||||||
|
|
||||||
getInstance().valueMap.put(key, value);
|
getInstance().mValueMap.put(key, value);
|
||||||
ConcurrentLinkedQueue<WeakReference<ExtraListener>> extraListenerList = getInstance().listenerMap.get(key);
|
ConcurrentLinkedQueue<WeakReference<ExtraListener>> extraListenerList = getInstance().mListenerMap.get(key);
|
||||||
if(extraListenerList == null) return; //No listeners
|
if(extraListenerList == null) return; //No listeners
|
||||||
for(WeakReference<ExtraListener> listener : extraListenerList){
|
for(WeakReference<ExtraListener> listener : extraListenerList){
|
||||||
if(listener.get() == null){
|
if(listener.get() == null){
|
||||||
@ -63,17 +63,17 @@ public final class ExtraCore {
|
|||||||
|
|
||||||
/** @return The value behind the key */
|
/** @return The value behind the key */
|
||||||
public static Object getValue(String key){
|
public static Object getValue(String key){
|
||||||
return getInstance().valueMap.get(key);
|
return getInstance().mValueMap.get(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Remove the key and its value from the valueMap */
|
/** Remove the key and its value from the valueMap */
|
||||||
public static void removeValue(String key){
|
public static void removeValue(String key){
|
||||||
getInstance().valueMap.remove(key);
|
getInstance().mValueMap.remove(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Remove all values */
|
/** Remove all values */
|
||||||
public static void removeAllValues(){
|
public static void removeAllValues(){
|
||||||
getInstance().valueMap.clear();
|
getInstance().mValueMap.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -82,11 +82,11 @@ public final class ExtraCore {
|
|||||||
* @param listener The ExtraListener to link
|
* @param listener The ExtraListener to link
|
||||||
*/
|
*/
|
||||||
public static void addExtraListener(String key, ExtraListener listener){
|
public static void addExtraListener(String key, ExtraListener listener){
|
||||||
ConcurrentLinkedQueue<WeakReference<ExtraListener>> listenerList = getInstance().listenerMap.get(key);
|
ConcurrentLinkedQueue<WeakReference<ExtraListener>> listenerList = getInstance().mListenerMap.get(key);
|
||||||
// Look for new sets
|
// Look for new sets
|
||||||
if(listenerList == null){
|
if(listenerList == null){
|
||||||
listenerList = new ConcurrentLinkedQueue<>();
|
listenerList = new ConcurrentLinkedQueue<>();
|
||||||
getInstance().listenerMap.put(key, listenerList);
|
getInstance().mListenerMap.put(key, listenerList);
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is kinda naive, I should look for duplicates
|
// This is kinda naive, I should look for duplicates
|
||||||
@ -100,11 +100,11 @@ public final class ExtraCore {
|
|||||||
* @param listener The ExtraListener to unlink
|
* @param listener The ExtraListener to unlink
|
||||||
*/
|
*/
|
||||||
public static void removeExtraListenerFromValue(String key, ExtraListener listener){
|
public static void removeExtraListenerFromValue(String key, ExtraListener listener){
|
||||||
ConcurrentLinkedQueue<WeakReference<ExtraListener>> listenerList = getInstance().listenerMap.get(key);
|
ConcurrentLinkedQueue<WeakReference<ExtraListener>> listenerList = getInstance().mListenerMap.get(key);
|
||||||
// Look for new sets
|
// Look for new sets
|
||||||
if(listenerList == null){
|
if(listenerList == null){
|
||||||
listenerList = new ConcurrentLinkedQueue<>();
|
listenerList = new ConcurrentLinkedQueue<>();
|
||||||
getInstance().listenerMap.put(key, listenerList);
|
getInstance().mListenerMap.put(key, listenerList);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Removes all occurrences of ExtraListener and all null references
|
// Removes all occurrences of ExtraListener and all null references
|
||||||
@ -122,11 +122,11 @@ public final class ExtraCore {
|
|||||||
* @param key The key to which ExtraListener are linked
|
* @param key The key to which ExtraListener are linked
|
||||||
*/
|
*/
|
||||||
public static void removeAllExtraListenersFromValue(String key){
|
public static void removeAllExtraListenersFromValue(String key){
|
||||||
ConcurrentLinkedQueue<WeakReference<ExtraListener>> listenerList = getInstance().listenerMap.get(key);
|
ConcurrentLinkedQueue<WeakReference<ExtraListener>> listenerList = getInstance().mListenerMap.get(key);
|
||||||
// Look for new sets
|
// Look for new sets
|
||||||
if(listenerList == null){
|
if(listenerList == null){
|
||||||
listenerList = new ConcurrentLinkedQueue<>();
|
listenerList = new ConcurrentLinkedQueue<>();
|
||||||
getInstance().listenerMap.put(key, listenerList);
|
getInstance().mListenerMap.put(key, listenerList);
|
||||||
}
|
}
|
||||||
|
|
||||||
listenerList.clear();
|
listenerList.clear();
|
||||||
@ -136,7 +136,7 @@ public final class ExtraCore {
|
|||||||
* Remove all ExtraListeners from listening to any value
|
* Remove all ExtraListeners from listening to any value
|
||||||
*/
|
*/
|
||||||
public static void removeAllExtraListeners(){
|
public static void removeAllExtraListeners(){
|
||||||
getInstance().listenerMap.clear();
|
getInstance().mListenerMap.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user