From 16ba692019413a667f60187112f49826951bcf57 Mon Sep 17 00:00:00 2001 From: Stepan Usatiuk Date: Fri, 25 Apr 2025 13:35:54 +0200 Subject: [PATCH] Recordify tree metadata --- .../JKleppmannTreeNodeMetaDirectory.java | 7 +--- .../objects/JKleppmannTreeNodeMetaFile.java | 40 ++----------------- .../dhfsfs/service/DhfsFileServiceImpl.java | 4 +- .../com/usatiuk/kleppmanntree/LogEffect.java | 4 +- .../com/usatiuk/kleppmanntree/NodeMeta.java | 2 +- .../com/usatiuk/kleppmanntree/OpMove.java | 2 +- .../com/usatiuk/kleppmanntree/TreeNode.java | 2 +- .../usatiuk/kleppmanntree/TestNodeMeta.java | 2 +- .../jkleppmanntree/JKleppmannTreeManager.java | 2 +- .../structs/JKleppmannTreeNodeMeta.java | 38 ++---------------- .../dhfs/peersync/PeerInfoService.java | 4 +- .../structs/JKleppmannTreeNodeMetaPeer.java | 32 +++------------ 12 files changed, 23 insertions(+), 116 deletions(-) diff --git a/dhfs-parent/dhfs-fs/src/main/java/com/usatiuk/dhfsfs/objects/JKleppmannTreeNodeMetaDirectory.java b/dhfs-parent/dhfs-fs/src/main/java/com/usatiuk/dhfsfs/objects/JKleppmannTreeNodeMetaDirectory.java index 99562fdc..50ca6199 100644 --- a/dhfs-parent/dhfs-fs/src/main/java/com/usatiuk/dhfsfs/objects/JKleppmannTreeNodeMetaDirectory.java +++ b/dhfs-parent/dhfs-fs/src/main/java/com/usatiuk/dhfsfs/objects/JKleppmannTreeNodeMetaDirectory.java @@ -6,12 +6,7 @@ import com.usatiuk.objects.JObjectKey; import java.util.Collection; import java.util.List; -public class JKleppmannTreeNodeMetaDirectory extends JKleppmannTreeNodeMeta { - public JKleppmannTreeNodeMetaDirectory(String name) { - super(name); - } - - @Override +public record JKleppmannTreeNodeMetaDirectory(String name) implements JKleppmannTreeNodeMeta { public JKleppmannTreeNodeMeta withName(String name) { return new JKleppmannTreeNodeMetaDirectory(name); } diff --git a/dhfs-parent/dhfs-fs/src/main/java/com/usatiuk/dhfsfs/objects/JKleppmannTreeNodeMetaFile.java b/dhfs-parent/dhfs-fs/src/main/java/com/usatiuk/dhfsfs/objects/JKleppmannTreeNodeMetaFile.java index fbfd3487..b4b0c1e0 100644 --- a/dhfs-parent/dhfs-fs/src/main/java/com/usatiuk/dhfsfs/objects/JKleppmannTreeNodeMetaFile.java +++ b/dhfs-parent/dhfs-fs/src/main/java/com/usatiuk/dhfsfs/objects/JKleppmannTreeNodeMetaFile.java @@ -5,49 +5,15 @@ import com.usatiuk.objects.JObjectKey; import java.util.Collection; import java.util.List; -import java.util.Objects; - -public class JKleppmannTreeNodeMetaFile extends JKleppmannTreeNodeMeta { - private final JObjectKey _fileIno; - - public JKleppmannTreeNodeMetaFile(String name, JObjectKey fileIno) { - super(name); - _fileIno = fileIno; - } - - public JObjectKey getFileIno() { - return _fileIno; - } +public record JKleppmannTreeNodeMetaFile(String name, JObjectKey fileIno) implements JKleppmannTreeNodeMeta { @Override public JKleppmannTreeNodeMeta withName(String name) { - return new JKleppmannTreeNodeMetaFile(name, _fileIno); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - if (!super.equals(o)) return false; - JKleppmannTreeNodeMetaFile that = (JKleppmannTreeNodeMetaFile) o; - return Objects.equals(_fileIno, that._fileIno); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), _fileIno); - } - - @Override - public String toString() { - return "JKleppmannTreeNodeMetaFile{" + - "_name=" + getName() + ", " + - "_fileIno=" + _fileIno + - '}'; + return new JKleppmannTreeNodeMetaFile(name, fileIno); } @Override public Collection collectRefsTo() { - return List.of(_fileIno); + return List.of(fileIno); } } diff --git a/dhfs-parent/dhfs-fs/src/main/java/com/usatiuk/dhfsfs/service/DhfsFileServiceImpl.java b/dhfs-parent/dhfs-fs/src/main/java/com/usatiuk/dhfsfs/service/DhfsFileServiceImpl.java index 0822c8be..0488f805 100644 --- a/dhfs-parent/dhfs-fs/src/main/java/com/usatiuk/dhfsfs/service/DhfsFileServiceImpl.java +++ b/dhfs-parent/dhfs-fs/src/main/java/com/usatiuk/dhfsfs/service/DhfsFileServiceImpl.java @@ -140,7 +140,7 @@ public class DhfsFileServiceImpl implements DhfsFileService { try { var ret = getDirEntryR(name); return switch (ret.meta()) { - case JKleppmannTreeNodeMetaFile f -> Optional.of(f.getFileIno()); + case JKleppmannTreeNodeMetaFile f -> Optional.of(f.fileIno()); case JKleppmannTreeNodeMetaDirectory f -> Optional.of(ret.key()); default -> Optional.empty(); }; @@ -189,7 +189,7 @@ public class DhfsFileServiceImpl implements DhfsFileService { return jObjectTxManager.executeTx(() -> { return getTreeW().findParent(w -> { if (w.meta() instanceof JKleppmannTreeNodeMetaFile f) - return f.getFileIno().equals(ino); + return f.fileIno().equals(ino); return false; }); }); diff --git a/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/LogEffect.java b/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/LogEffect.java index 6af98a98..c428b13b 100644 --- a/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/LogEffect.java +++ b/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/LogEffect.java @@ -10,14 +10,14 @@ public record LogEffect, PeerIdT exten NodeIdT childId) implements Serializable { public String oldName() { if (oldInfo.oldMeta() != null) { - return oldInfo.oldMeta().getName(); + return oldInfo.oldMeta().name(); } return childId.toString(); } public String newName() { if (newMeta != null) { - return newMeta.getName(); + return newMeta.name(); } return childId.toString(); } diff --git a/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/NodeMeta.java b/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/NodeMeta.java index 8705626b..c3641911 100644 --- a/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/NodeMeta.java +++ b/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/NodeMeta.java @@ -3,7 +3,7 @@ package com.usatiuk.kleppmanntree; import java.io.Serializable; public interface NodeMeta extends Serializable { - String getName(); + String name(); NodeMeta withName(String name); } diff --git a/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/OpMove.java b/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/OpMove.java index b04bf8ca..7db59051 100644 --- a/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/OpMove.java +++ b/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/OpMove.java @@ -7,7 +7,7 @@ public record OpMove, PeerIdT extends NodeIdT childId) implements Serializable { public String newName() { if (newMeta != null) - return newMeta.getName(); + return newMeta.name(); return childId.toString(); } } diff --git a/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/TreeNode.java b/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/TreeNode.java index d5a4627a..708cd6a1 100644 --- a/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/TreeNode.java +++ b/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/TreeNode.java @@ -17,7 +17,7 @@ public interface TreeNode, PeerIdT ext default String name() { var meta = meta(); - if (meta != null) return meta.getName(); + if (meta != null) return meta.name(); return key().toString(); } diff --git a/dhfs-parent/kleppmanntree/src/test/java/com/usatiuk/kleppmanntree/TestNodeMeta.java b/dhfs-parent/kleppmanntree/src/test/java/com/usatiuk/kleppmanntree/TestNodeMeta.java index be276c9c..3ceeca8a 100644 --- a/dhfs-parent/kleppmanntree/src/test/java/com/usatiuk/kleppmanntree/TestNodeMeta.java +++ b/dhfs-parent/kleppmanntree/src/test/java/com/usatiuk/kleppmanntree/TestNodeMeta.java @@ -8,7 +8,7 @@ public abstract class TestNodeMeta implements NodeMeta { } @Override - public String getName() { + public String name() { return _name; } diff --git a/dhfs-parent/sync-base/src/main/java/com/usatiuk/dhfs/jkleppmanntree/JKleppmannTreeManager.java b/dhfs-parent/sync-base/src/main/java/com/usatiuk/dhfs/jkleppmanntree/JKleppmannTreeManager.java index 1a3f1af8..0f184e0f 100644 --- a/dhfs-parent/sync-base/src/main/java/com/usatiuk/dhfs/jkleppmanntree/JKleppmannTreeManager.java +++ b/dhfs-parent/sync-base/src/main/java/com/usatiuk/dhfs/jkleppmanntree/JKleppmannTreeManager.java @@ -168,7 +168,7 @@ public class JKleppmannTreeManager { // } if (Log.isTraceEnabled()) - Log.trace("Received op from " + from + ": " + jop.op().timestamp().timestamp() + " " + jop.op().childId() + "->" + jop.op().newParentId() + " as " + jop.op().newMeta().getName()); + Log.trace("Received op from " + from + ": " + jop.op().timestamp().timestamp() + " " + jop.op().childId() + "->" + jop.op().newParentId() + " as " + jop.op().newMeta().name()); try { _tree.applyExternalOp(from, jop.op()); diff --git a/dhfs-parent/sync-base/src/main/java/com/usatiuk/dhfs/jkleppmanntree/structs/JKleppmannTreeNodeMeta.java b/dhfs-parent/sync-base/src/main/java/com/usatiuk/dhfs/jkleppmanntree/structs/JKleppmannTreeNodeMeta.java index f22d933c..86d558d3 100644 --- a/dhfs-parent/sync-base/src/main/java/com/usatiuk/dhfs/jkleppmanntree/structs/JKleppmannTreeNodeMeta.java +++ b/dhfs-parent/sync-base/src/main/java/com/usatiuk/dhfs/jkleppmanntree/structs/JKleppmannTreeNodeMeta.java @@ -4,42 +4,10 @@ import com.usatiuk.kleppmanntree.NodeMeta; import com.usatiuk.objects.JObjectKey; import java.util.Collection; -import java.util.Objects; //@ProtoMirror(JKleppmannTreeNodeMetaP.class) -public abstract class JKleppmannTreeNodeMeta implements NodeMeta { - private final String _name; +public interface JKleppmannTreeNodeMeta extends NodeMeta { + JKleppmannTreeNodeMeta withName(String name); - public JKleppmannTreeNodeMeta(String name) { - _name = name; - } - - public String getName() { - return _name; - } - - public abstract JKleppmannTreeNodeMeta withName(String name); - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - JKleppmannTreeNodeMeta that = (JKleppmannTreeNodeMeta) o; - return Objects.equals(_name, that._name); - } - - @Override - public int hashCode() { - return Objects.hashCode(_name); - } - - @Override - public String toString() { - return "JKleppmannTreeNodeMeta{" + - "class=" + this.getClass().getSimpleName() + " " + - "_name='" + _name + '\'' + - '}'; - } - - abstract public Collection collectRefsTo(); + Collection collectRefsTo(); } diff --git a/dhfs-parent/sync-base/src/main/java/com/usatiuk/dhfs/peersync/PeerInfoService.java b/dhfs-parent/sync-base/src/main/java/com/usatiuk/dhfs/peersync/PeerInfoService.java index d30ea5df..22f521e0 100644 --- a/dhfs-parent/sync-base/src/main/java/com/usatiuk/dhfs/peersync/PeerInfoService.java +++ b/dhfs-parent/sync-base/src/main/java/com/usatiuk/dhfs/peersync/PeerInfoService.java @@ -41,7 +41,7 @@ public class PeerInfoService { return jObjectTxManager.run(() -> { return curTx.get(JKleppmannTreeNode.class, key).flatMap(node -> { var meta = (JKleppmannTreeNodeMetaPeer) node.meta(); - return remoteTx.getData(PeerInfo.class, meta.getPeerId()); + return remoteTx.getData(PeerInfo.class, meta.peerId()); }); }); @@ -65,7 +65,7 @@ public class PeerInfoService { } return curTx.get(JKleppmannTreeNode.class, gotKey).flatMap(node -> { var meta = (JKleppmannTreeNodeMetaPeer) node.meta(); - return remoteTx.getData(PeerInfo.class, meta.getPeerId()); + return remoteTx.getData(PeerInfo.class, meta.peerId()); }); }); } diff --git a/dhfs-parent/sync-base/src/main/java/com/usatiuk/dhfs/peersync/structs/JKleppmannTreeNodeMetaPeer.java b/dhfs-parent/sync-base/src/main/java/com/usatiuk/dhfs/peersync/structs/JKleppmannTreeNodeMetaPeer.java index f52cb286..bc9fe580 100644 --- a/dhfs-parent/sync-base/src/main/java/com/usatiuk/dhfs/peersync/structs/JKleppmannTreeNodeMetaPeer.java +++ b/dhfs-parent/sync-base/src/main/java/com/usatiuk/dhfs/peersync/structs/JKleppmannTreeNodeMetaPeer.java @@ -6,15 +6,11 @@ import com.usatiuk.objects.JObjectKey; import java.util.Collection; import java.util.List; -import java.util.Objects; //@ProtoMirror(JKleppmannTreeNodeMetaFileP.class) -public class JKleppmannTreeNodeMetaPeer extends JKleppmannTreeNodeMeta { - private final JObjectKey _peerId; - +public record JKleppmannTreeNodeMetaPeer(String name, JObjectKey peerId) implements JKleppmannTreeNodeMeta { public JKleppmannTreeNodeMetaPeer(PeerId id) { - super(peerIdToNodeId(id).value()); - _peerId = id.toJObjectKey(); + this(peerIdToNodeId(id).value(), id.id()); } public static JObjectKey peerIdToNodeId(PeerId id) { @@ -28,33 +24,15 @@ public class JKleppmannTreeNodeMetaPeer extends JKleppmannTreeNodeMeta { return PeerId.of(id.value().substring(0, id.value().length() - "_tree_node".length())); } - public JObjectKey getPeerId() { - return _peerId; - } - @Override public JKleppmannTreeNodeMeta withName(String name) { - assert name.equals(peerIdToNodeId(PeerId.of(getPeerId().value())).toString()); - assert getName().equals(name); + assert name.equals(peerIdToNodeId(PeerId.of(peerId().value())).toString()); + assert name().equals(name); return this; } - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - if (!super.equals(o)) return false; - JKleppmannTreeNodeMetaPeer that = (JKleppmannTreeNodeMetaPeer) o; - return Objects.equals(_peerId, that._peerId); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), _peerId); - } - @Override public Collection collectRefsTo() { - return List.of(_peerId); + return List.of(peerId); } }