diff src/luan/LuanException.java @ 1578:c922446f53aa

immutable threading
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 08 Feb 2021 14:16:19 -0700
parents adba594db0b4
children a9ff30fb5d89
line wrap: on
line diff
--- a/src/luan/LuanException.java	Sun Jan 31 16:04:39 2021 -0700
+++ b/src/luan/LuanException.java	Mon Feb 08 14:16:19 2021 -0700
@@ -9,9 +9,10 @@
 import java.util.HashMap;
 
 
-public final class LuanException extends Exception implements LuanCloneable {
+public final class LuanException extends Exception implements LuanMutable {
 	private LuanTable table;
 	private Map extra = new HashMap();
+	private boolean immutable = false;
 
 	public LuanException(String msg,Throwable cause) {
 		super(msg,cause);
@@ -25,19 +26,16 @@
 		super(cause);
 	}
 
-	@Override public LuanException shallowClone() {
-		return new LuanException(getMessage(),getCause());
+	@Override public boolean isImmutable() {
+		return immutable;
 	}
 
-	@Override public void deepenClone(LuanCloneable dc,LuanCloner cloner) {
-		LuanException clone = (LuanException)dc;
-		clone.table = (LuanTable)cloner.clone(table);
-		clone.extra = (Map)cloner.clone(extra);
-	}
-
-	@Override public void makeImmutable(LuanImmutabler immutabler) throws LuanException {
-		immutabler.makeImmutable(table);
-		immutabler.makeImmutable(extra);
+	@Override public void makeImmutable() {
+		if(immutable)
+			return;
+		immutable = true;
+		LuanMutable.makeImmutable(table);
+		LuanMutable.makeImmutable(extra);
 	}
 
 	public void put(String key,Object value) throws LuanException {