package co.codewizards.cloudstore.ls.core.invoke; import static co.codewizards.cloudstore.core.util.AssertUtil.*; import java.io.Serializable; import java.util.HashMap; import java.util.Map; import co.codewizards.cloudstore.core.ls.NoObjectRef; public class ForceNonTransientContainer implements Serializable { private static final long serialVersionUID = 1L; private final Object transientFieldOwnerObject; private final Map<String, Object> transientFieldName2Value; public ForceNonTransientContainer(final Object transientFieldOwnerObject, Map<String, Object> transientFieldName2Value) { this.transientFieldOwnerObject = assertNotNull(transientFieldOwnerObject, "transientFieldOwnerObject"); this.transientFieldName2Value = new NoObjectRefMap<String, Object>(assertNotNull(transientFieldName2Value, "transientFieldName2Value")); } public Object getTransientFieldOwnerObject() { return transientFieldOwnerObject; } public Map<String, Object> getTransientFieldName2Value() { return transientFieldName2Value; } @NoObjectRef(inheritToObjectGraphChildren = false) private static final class NoObjectRefMap<K, V> extends HashMap<K, V> { private static final long serialVersionUID = 1L; public NoObjectRefMap(Map<? extends K, ? extends V> m) { super(m); } } }