All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.aerospike.mapper.tools.DeferredObjectLoader Maven / Gradle / Ivy

package com.aerospike.mapper.tools;

import java.util.ArrayList;
import java.util.List;

public class DeferredObjectLoader {
	public interface DeferredSetter {
		void setValue(Object object);
	}
	
	public static class DeferredObject {
		private final Object key;
		private final Class type;
		private final boolean isDigest;
		public DeferredObject(Object key, Class type, boolean isDigest) {
			super();
			this.key = key;
			this.type = type;
			this.isDigest = isDigest;
		}
		public Object getKey() {
			return key;
		}
		public Class getType() {
			return type;
		}
		public boolean isDigest() {
			return isDigest;
		}
	}
	
	public static class DeferredObjectSetter {
		private final DeferredSetter setter;
		private final DeferredObject object;
		
		public DeferredObjectSetter(DeferredSetter setter, DeferredObject object) {
			super();
			this.setter = setter;
			this.object = object;
		}
		public DeferredSetter getSetter() {
			return setter;
		}
		public DeferredObject getObject() {
			return object;
		}
	}
	
	
	private static final ThreadLocal> threadLocalLoader = ThreadLocal.withInitial(ArrayList::new);
	
	public static void save(DeferredObjectSetter object) {
		threadLocalLoader.get().add(object);
	}
	
	public static void clear() {
		threadLocalLoader.get().clear();
	}
	
	public static List get() {
		return threadLocalLoader.get();
	}
	
	public static void add(DeferredObjectSetter deferredSetter) {
		threadLocalLoader.get().add(deferredSetter);
	}

	public static List getAndClear() {
		List localArray = threadLocalLoader.get();
		List setters = new ArrayList<>(localArray);
		localArray.clear();
		return setters;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy